redis tcp-backlog配置


在redis2.8版本中有一個tcp-backlog配置, 說明如下:

# TCP listen() backlog.
#
# In high requests-per-second environments you need an high backlog in order
# to avoid slow clients connections issues. Note that the Linux kernel
# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
# in order to get the desired effect.
tcp-backlog 100

然后運行ss命令顯示:

State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      100                       *:6379                     *:*     

我們看到Send-Q的值為100, 即是我們配置的tcp-backlog值. 為了搞清楚這個值的意思, 了解了下tcp的三次握手進行中的一些queue的知識. 參考下圖我們可以看到在server接收到sny的時候會進入到一個syn queue隊列, 當server端最終收到ack時轉換到accept queue隊列. 上面終端顯示在listen狀態下的連接, 其Send-Q就是這個accept queue隊列的最大值. 只有server端執行了accept后才會從這個隊列中移除這個連接. 這個值的大小是受somaxconn影響的, 因為是取的它們兩者的最小值, 所以如果要調大的話必需修改內核的somaxconn值. 

參考: http://jaseywang.me/2014/07/20/tcp-queue-%E7%9A%84%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM