File tree Expand file tree Collapse file tree 1 file changed +25
-0
lines changed
Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import (
1111 "encoding/binary"
1212 "encoding/hex"
1313 "errors"
14+ "expvar"
1415 "fmt"
1516 "io"
1617 "log"
@@ -62,6 +63,28 @@ var Conf = struct {
6263 Socks5LruSize : 8 ,
6364}
6465
66+ // Expv is a simple wrapper around the expvars package.
67+ var Expv = struct {
68+ RouterCacheHits * expvar.Int
69+ RouterCacheMiss * expvar.Int
70+ RouterCacheRate int
71+ }{
72+ RouterCacheHits : expvar .NewInt ("RouterCache.Hits" ),
73+ RouterCacheMiss : expvar .NewInt ("RouterCache.Miss" ),
74+ RouterCacheRate : func () int {
75+ expvar .Publish ("RouterCache.Rate" , expvar .Func (func () any {
76+ hits := expvar .Get ("RouterCache.Hits" ).(* expvar.Int ).Value ()
77+ miss := expvar .Get ("RouterCache.Miss" ).(* expvar.Int ).Value ()
78+ alls := hits + miss
79+ if alls == 0 {
80+ return 0
81+ }
82+ return float64 (hits ) / float64 (alls )
83+ }))
84+ return 0
85+ }(),
86+ }
87+
6588// ResolverDns returns a DNS resolver.
6689func ResolverDns (addr string ) * net.Resolver {
6790 return & net.Resolver {
@@ -776,8 +799,10 @@ type RouterCache struct {
776799func (r * RouterCache ) Road (ctx * Context , host string ) Road {
777800 a , b := r .Lru .GetExists (host )
778801 if b {
802+ Expv .RouterCacheHits .Add (1 )
779803 return a
780804 }
805+ Expv .RouterCacheMiss .Add (1 )
781806 c := r .Raw .Road (ctx , host )
782807 r .Lru .Set (host , c )
783808 return c
You can’t perform that action at this time.
0 commit comments