標籤:des style blog http io os sp div 2014
在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命令顯示:
12 |
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/
redis tcp-backlog配置