linux - Bilangan sambungan hanya 2 apabila kumpulan sambungan redis digunakan di bawah 10,000 concurrency?
仅有的幸福
仅有的幸福 2017-05-16 13:18:32
0
1
974

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. . .

仅有的幸福
仅有的幸福

membalas semua(1)
phpcn_u1582

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)
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan