https://mp.weixin.qq.com/s?srcid=1229Fiezd1SFYmCWtSJthQix&scene=23&sharer_sharetime=1577585166978&mid=2454934092&sharer_shareid=7cca4206c9bd967418f46841199ec4ee&sn=5e426a0a2d29933069eb518b740977a8&idx=1&__biz=MzA5NTUzNTA2Mw%3D%3D&chksm=871a18f4b06d91e2ad11bf0671992d7c221d892a11fcace15f93aab810c7773dd8d9669fa59c&mpshare=1#rd
【文件】
fs.file-max = 999999:這個參數表示進程(比如一個worker進程)可以同時打開的最大句柄數,這個參數直線限制最大並發連接數,需根據實際情況配置。這個地方有一個錯誤,這個參數是系統級非用戶級文件描述符限制
使用ulimit -a 可以查看當前系統(用戶進程)的所有限制值,使用ulimit -n 可以查看當前的最大打開文件數。新裝的linux 默認只有1024 ,當作負載較大的服務器時,很容易遇到error: too many open files。因此,需要將其改大,在/etc/security/limits.conf最后增加
【time_wait】
net.ipv4.tcp_max_tw_buckets = 6000 :這個參數表示操作系統允許TIME_WAIT套接字數量的最大值,如果超過這個數字,TIME_WAIT套接字將立刻被清除並打印警告信息。該參數默認為180000,過多的TIME_WAIT套接字會使Web服務器變慢。注:主動關閉連接的服務端會產生TIME_WAIT狀態的連接
net.ipv4.tcp_tw_recycle = 1 :啟用timewait快速回收。默認0
net.ipv4.tcp_tw_reuse = 1 :開啟重用。默認0.允許將TIME-WAIT sockets重新用於新的TCP連接。這對於服務器來說很有意義,因為服務器上總會有大量TIME-WAIT狀態的連接。17tcp close端口占用 & setReuseAddress 【本地】 不僅time_wait 還有fin_wait2
net.ipv4.tcp_syncookies = 1 :開啟SYN Cookies,當出現SYN等待隊列溢出時,啟用cookies來處理。
net.ipv4.tcp_max_syn_backlog = 262144 :這個參數標示TCP三次握手建立階段接受SYN請求隊列的最大長度,默認為1024,將其設置得大一些可以使出現Nginx繁忙來不及accept新連接的情況時,Linux不至於丟失客戶端發起的連接請求。
net.ipv4.tcp_fin_timeout 修改默認超時時間,注意是fin_wait_2的時間,不像Windows 可以修改注冊表修改2MSL 的值,linux 需要修改內核宏定義重新編譯,tcp_fin_timeout 不是2MSL 而是Fin-WAIT-2狀態超時時間
net.ipv4.ip_local_port_range = 1024 65000 :允許系統打開的端口范圍。
net.ipv4.tcp_timestamps 默認開啟,支持PAWS
21-ahttpclient 與TIME_WAIT 客戶端close與服務端close
net.ipv4.tcp_keepalive_time = 30:這個參數表示當keepalive啟用時,TCP發送keepalive消息的頻度。默認是2小時,若將其設置的小一些,可以更快地清理無效的連接。
【BUF】
net.ipv4.tcp_rmem = 10240 87380 12582912 :這個參數定義了TCP接受緩存(用於TCP接受滑動窗口)的最小值、默認值、最大值。
net.ipv4.tcp_wmem = 10240 87380 12582912:這個參數定義了TCP發送緩存(用於TCP發送滑動窗口)的最小值、默認值、最大值。
net.core.rmem_default = 6291456:這個參數表示內核套接字接受緩存區默認的大小。
net.core.wmem_default = 6291456:這個參數表示內核套接字發送緩存區默認的大小。
net.core.rmem_max = 12582912:這個參數表示內核套接字接受緩存區的最大大小。
net.core.wmem_max = 12582912:這個參數表示內核套接字發送緩存區的最大大小。
10tcp緩沖區大小設置
https://www.cnblogs.com/lxwphp/p/11237052.html