-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
usage :
main.go
func init() {
var err error
initCap := os.Getenv("INIT_ESTABLISH_SOCKET")
maxCap := os.Getenv("MAX_ESTABLISH_SOCKET")
_initCap, _ := strconv.Atoi(initCap)
_maxCap, _ := strconv.Atoi(maxCap)
pl, err = pool.New(_initCap, _maxCap, func() interface{} {
addr, _ := net.ResolveTCPAddr("tcp4", os.Getenv("HSM_HOST"))
cli, err := net.DialTCP("tcp4", nil, addr)
if err != nil {
log.Printf("create client connection error: %v\n", err)
}
return cli
})
if err != nil {
log.Printf("create pool error: %v\n", err)
}
pl.Ping = func(conn interface{}) bool {
return true
}
pl.Close = func(conn interface{}) {
conn.(*net.TCPConn).Close()
}
}
and this in my service called by controller
func hsmSend(pl *pool.Pool, payload string) (result []byte, err error) {
c, err := pl.Get()
if err != nil {
err = fmt.Errorf("using pool error: %v", err)
return
}
conn := c.(*net.TCPConn)
dataLen := len(payload)
x := rune(dataLen >> 8)
b := rune(dataLen & 255)
payloadParsed := fmt.Sprintf("%c%c%s", x, b, payload)
conn.Write([]byte(payloadParsed))
result = make([]byte, globalhelpers.HsmLen(payload[4:6]).(int))
n, err := conn.Read(result)
if err != nil || n < 4 {
err = fmt.Errorf("read data error: %v, size: %d", err, n)
return
}
pl.Put(conn)
result = result[:n]
return
}
connection always create new connection grater than max capacity pool
monitoring my connection
netstat -tupn | grep 1500
in my terminal
tcp 0 0 10.233.114.12:55708 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:39894 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54604 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54652 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:56400 10.35.65.144:1500 ESTABLISHED 52043/main
tcp 0 0 10.233.114.12:39890 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55484 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54928 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:56156 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54810 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55014 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55468 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:39832 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54968 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55536 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55238 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55494 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54970 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55582 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54978 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:42690 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54736 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:54840 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:55096 10.35.65.144:1500 TIME_WAIT -
tcp 0 0 10.233.114.12:56400 10.35.65.144:1500 ESTABLISHED 52043/main
how to set up connection just maximum established ?
Metadata
Metadata
Assignees
Labels
No labels