python连接redis的time_wait数过高_使用Redis 连接池客户端出现大量TIME_WAIT的链接,是我用法有问题么?...

直接代码了

package utils

import (

"github.com/garyburd/redigo/redis"

"time"

)

var redispool map[string]*redis.Pool

type RedisConn struct {

Con redis.Conn

}

func NewRedisConn(tag string) *RedisConn {

return &RedisConn{redispool[tag].Get()}

}

func (r *RedisConn) Dos(cmd string, args ...interface{}) (result interface{}, err error) {

result, err = r.Con.Do(cmd, args...)

if err != nil {

Log.Error(err)

}

return

}

func (r *RedisConn) Sends(cmd string, args ...interface{}) error {

err := r.Con.Send(cmd, args...)

if err != nil {

Log.Error(err)

}

return err

}

func (r *RedisConn) Close() {

r.Con.Close()

}

/*

生成redis连接池

*/

func newRedisPool(server string, maxidle int) *redis.Pool {

return &redis.Pool{

MaxIdle: maxidle,

MaxActive: 200,

IdleTimeout: 240 * time.Second,

Wait: true,

Dial: func() (redis.Conn, error) {

c, err := redis.Dial("tcp", server)

if err != nil {

return nil, err

}

return c, err

},

TestOnBorrow: func(c redis.Conn, t time.Time) error {

_, err := c.Do("PING")

return err

},

}

}

maxidle设置的是10

func (t *ALL) Exec(body []byte) {

request := t.TransReq(body)

redisconn := utils.NewRedisConn("apis")

defer redisconn.Close()

keys := utils.GetKey(*request, t.Config.Key)

key := keys.Key

snow.Rotate(&snow.SnowSys{Key: key, Index: keys.Index, Tag: "apis", Trem: "all", RedisConn: redisconn}, t.Config.Snow)

redisconn.Dos("MULTI")

defer redisconn.Dos("EXEC")

if request.CODE == "0" {

redisconn.Sends("HINCRBYFLOAT", key, "succ", 1.000000)

redisconn.Sends("HINCRBYFLOAT", key, "total", 1.000000)

}

if request.CODE != "0" {

redisconn.Sends("HINCRBYFLOAT", key, request.CODE, 1.000000)

redisconn.Sends("HINCRBYFLOAT", key, "fail", 1.000000)

redisconn.Sends("HINCRBYFLOAT", key, "total", 1.000000)

}

}

这里是请求调用,用的时批处理

现在发现每秒10k请求,持续1分钟后,客户端就会出现上万的TIME_WAIT的链接,然后程序就报: connect: cannot assign requested address了,redis服务器上基本没链接。

打印出来的redis.pool.activecount 活跃的数量一直每超过200

是我使用redis 连接池的方法不对么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值