Skip to content

Commit 57cbe65

Browse files
committed
scalability improvement: use per-server peripconn pool
1 parent 72352d7 commit 57cbe65

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

peripconn.go

+6-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
)
88

99
type perIPConnCounter struct {
10+
pool sync.Pool
1011
lock sync.Mutex
1112
m map[uint32]int
1213
}
@@ -45,25 +46,23 @@ type perIPConn struct {
4546
}
4647

4748
func acquirePerIPConn(conn net.Conn, ip uint32, counter *perIPConnCounter) *perIPConn {
48-
v := perIPConnPool.Get()
49+
v := counter.pool.Get()
4950
if v == nil {
50-
v = &perIPConn{}
51+
v = &perIPConn{
52+
perIPConnCounter: counter,
53+
}
5154
}
5255
c := v.(*perIPConn)
5356
c.Conn = conn
5457
c.ip = ip
55-
c.perIPConnCounter = counter
5658
return c
5759
}
5860

5961
func releasePerIPConn(c *perIPConn) {
6062
c.Conn = nil
61-
c.perIPConnCounter = nil
62-
perIPConnPool.Put(c)
63+
c.perIPConnCounter.pool.Put(c)
6364
}
6465

65-
var perIPConnPool sync.Pool
66-
6766
func (c *perIPConn) Close() error {
6867
err := c.Conn.Close()
6968
c.perIPConnCounter.Unregister(c.ip)

0 commit comments

Comments
 (0)