Rumah > Soal Jawab > teks badan
Seperti yang ditunjukkan dalam gambar, saya menulis kumpulan sambungan redis menggunakan pustaka redigo golang, dan menggunakan ujian ab untuk mensimulasikan 10,000 operasi baca serentak Walau bagaimanapun, tidak kira bagaimana redis menyegarkan maklumat, bilangan sambungan sentiasa 2, dan hanya 4 dipaparkan paling banyak. Walau bagaimanapun, terdapat lebih daripada 60 sambungan menggunakan operasi tulis, dan netstat-ano menunjukkan bahawa memang terdapat sejumlah besar sambungan TCP dalam status TIME_WAIT pada alat kawalan jauh 127.0.0.1:6379 ? (Bilangan maksimum sambungan dalam konfigurasi redis ialah 10,000)
(Sila abaikan tetingkap netstat di sebelah kanan, cuma saya tidak mengambil tangkapan skrin dengan betul. Malah, saya menjumpai dan menapisnya sendiri dan memang terdapat sejumlah besar sambungan TCP dalam status TIME_WAIT berlaku pada alat kawalan jauh 127.0.0.1:6379)
PS: Soalan lain ialah mengapa parameter maksimum -c program ujian ab hanya boleh 10,000 saya masukkan 100,000 untuk terus memaparkan dokumen bantuan. . .
phpcn_u15822017-05-16 13:20:32
Fikirkan kolam sambungan tidak diduduki?
Tulis begini
package main
import "github.com/garyburd/redigo/redis"
import (
"flag"
"fmt"
"time"
)
func newPool(addr string) *redis.Pool {
return &redis.Pool{
MaxIdle: 30,
IdleTimeout: 240 * time.Second,
Dial: func() (redis.Conn, error) { return redis.Dial("tcp", addr) },
}
}
var (
pool *redis.Pool
redisServer = flag.String("redisServer", ":6379", "")
)
func main() {
flag.Parse()
pool = newPool(*redisServer)
fmt.Println(pool)
conn := pool.Get()
conn2 := pool.Get()
conn3 := pool.Get()
conn4 := pool.Get()
conn.Do("get", "a")
conn2.Do("get", "a")
conn3.Do("get", "a")
conn4.Do("get", "a")
//这里使劲加connX,就能看到效果了
//defer conn.Close()
//defer conn2.Close()
//defer conn3.Close()
//defer conn4.Close()
time.Sleep(100 * time.Second)
}