Linux 連線數調校.

Temperature: 0 °C

蘇恆永蘇恆永
最近常常遇到連線數太多(因為底層 WebService 太忙了).
web 最後連不上的問題.

後來 用這個指令
netstat -anl | grep 80 | awk '/^tcp/ {t[$NF]++}END{for(state in t){print state, t[state]} }'

檢查發現
LISTEN 2
FIN_WAIT1 4
FIN_WAIT2 113
ESTABLISHED 73
TIME_WAIT 566
SYN_RECV 1

停在 TIME_WAIT 的數目偏大了,

原本 linux 的 somaxconn 只有 1024,
所以等於只剩大約 300多個連線可以給客戶連.

查了好幾篇網路文件.
總算調好參數.
現在 sysctl.conf 裡面
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.ip_local_port_range = 9000 64000


lighttpd.conf 裡面加上
server.max-fds = 2048

一切搞定

ps: 後來發現 net.ipv4.tcp_tw_reuse, net.ipv4.tcp_tw_recycle 如果打開,
在 NAT 後面會發生問題,
所以還是關掉比較好.

參考下列幾篇:
http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html
http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/

捷運科技大樓站 Go

作者簡介

蘇恆永

重新 pickup 本能中

訪客留言

留下一些足跡證明你來拜訪過我

  • JuilinChung

    JuilinChung

    2015-04-28 04:36:22
    man,我依稀記得我也遇過類似的問題

推薦閱讀

作者其他相關類別故事

一堆設計資源, 記錄一下

一堆設計資源, 記錄一下

設計資源總匯 奧革設計 奧革設計團隊精心整理的設計師必備設計資源,收藏各式各樣的靈感、...

實用的 netstat 查詢連線指令

實用的 netstat 查詢連線指令

以下是一些實用的 netstat 語法,可以檢查主機的連線數量: netstat na...

ankhsvn 使用非標準 ssh port, 及設定免密碼登入

ankhsvn 使用非標準 ssh port, 及設定免密碼登入

ankhsvn https://ankhsvn.open.collab.net/...

請選擇選項

執行錯誤

Hi,謝謝你的參與,但無法重複投票哦~