Я пытаюсь написать простой http-сервер на ходу, принимаю строку запроса и отправляю ее на redis.Я использую модуль redigo для подключения redis и fasthttp для http-сервера.
В коде (ниже).Я пытаюсь использовать пул redis, чтобы подключения использовались повторно.Когда я пытаюсь выполнить сравнительный анализ, используя ab
ab -n 10000 -c 100 -k -r http://127.0.0.1:9080/?a=b
, я вижу, что открыто почти 6000 соединений redis.Я вижу, что при использовании netstat
не работает пул соединений?Как мне уменьшить количество подключений к Redis?
package main
import (
"fmt"
"time"
"github.com/garyburd/redigo/redis"
"github.com/valyala/fasthttp"
)
var Pool *redis.Pool
var err error
func init() {
Pool = newPool("127.0.0.1:6379")
_, err = Pool.Dial()
if err != nil {
fmt.Println(err)
}
}
func newPool(server string) *redis.Pool {
return &redis.Pool{
MaxIdle: 3,
IdleTimeout: 240 * time.Second,
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", server)
if err != nil {
return nil, err
}
return c, err
},
}
}
func fastHTTPHandler(ctx *fasthttp.RequestCtx) {
conn := Pool.Get()
defer conn.Close()
conn.Do("RPUSH", "LTBENCH_PARAMS", ctx.QueryArgs().QueryString())
}
func main() {
fasthttp.ListenAndServe(":9080", fastHTTPHandler)
}