配置客戶端異常斷線檢測時間
代碼中:((SocketSessionConfig)session.getConfig()).setKeepAlive(true);
系統設置如下
vi /etc/sysctl.conf
#jxm---------
net.ipv4.tcp_fin_timeout = 40
#10s
#當探測沒有確認時,重新發送探測的頻度。默認是75秒。 現在是3秒
net.ipv4.tcp_keepalive_intvl = 10
#在認定連接失效之前,發送多少個TCP的keepalive探測包。默認值是9次。現在3次
net.ipv4.tcp_keepalive_probes = 3
#是指TCP發送keepalive消息的頻度,默認爲7200秒,現在是60秒。
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
#----------end
生效配置:
sysctl -p
優化socket性能:
https://yq.aliyun.com/ziliao/56727
在Linux下高併發的Squid服務器中,TCP TIME_WAIT套接字數量經常可達兩三萬,服務器很容易就會被拖死。不過,我們可以通過修改Linux內核參數來減少Squid服務器的TIME_WAIT套接字數量,命令如下所示:
#vim /etc/sysctl.conf
然後, 增加以下參數:
代碼如下 複製代碼
#適用於Squid服務器
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
如果是用於Apache或Nginx等的Web服務器,或Nginx的反向代理,則只需要更改以下幾項即可:
#適用於Apache或Nginx等web服務器,或Nginx的反向代理
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
如果是郵件服務器,則建議內核方案如下:
#適用於郵件服務器
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
kernel.shmmax = 134217728
執行以下命令使內核配置立即生效:
#/sbin/sysctl -p