Linux TCP參數(shù)配置
阿里云規(guī)范
1.【推薦】高并發(fā)服務器建議調(diào)小 TCP 協(xié)議的 time_wait 超時時間。
說明:操作系統(tǒng)默認 240 秒后,才會關閉處于 time_wait 狀態(tài)的連接,在高并發(fā)訪問下,服務器端會因為處于
time_wait 的連接數(shù)太多,可能無法建立新的連接,所以需要在服務器上調(diào)小此等待值。
正例:在 linux 服務器上請通過變更/etc/sysctl.conf 文件去修改該缺省值(秒):net.ipv4.tcp_fin_timeout=30
2.【推薦】調(diào)大服務器所支持的最大文件句柄數(shù)(File Descriptor,簡寫為 fd)
說明:主流操作系統(tǒng)的設計是將 TCP / UDP 連接采用與文件一樣的方式去管理,即一個連接對應于一個 fd。主流的 linux
服務器默認所支持最大 fd 數(shù)量為 1024,當并發(fā)連接數(shù)很大時很容易因為 fd 不足而出現(xiàn)“open too many files”錯誤,
導致新的連接無法建立。建議將 linux 服務器所支持的最大句柄數(shù)調(diào)高數(shù)倍(與服務器的內(nèi)存數(shù)量相關)。
參數(shù)詳情
為防止洪水攻擊,高并發(fā)系統(tǒng)需要將此項關閉
net.ipv4.tcp_syncookies = 0
開啟TCP連接重用,允許處理TIME-WAIT狀態(tài)的連接重新用于新的TCP連接
net.ipv4.tcp_tw_reuse = 1
開啟快速回收TCP連接中處于TIME-WAIT狀態(tài)的連接
net.ipv4.tcp_tw_recycle = 1
#修改超時時間( s ),該值表示如果連接由本端關閉,則連接處于 FIN-WAIT-2狀態(tài)的時間為
net.ipv4.tcp_fin_timeout = 30
#當 keepalive(長連接)啟用的時候,TCP發(fā)送 keepalive 消息(探測包)的時間間隔( s ),默認為2個小時
net.ipv4.tcp_keepalive_time =1200
#服務器對外連接的端口范圍,影響該服務器與其他服務器的連接數(shù)
net.ipv4.ip_local_port_range =102465535
#SYN隊列的長度,可以容納更多等待連接的網(wǎng)絡連接數(shù),默認為1024
net.ipv4.tcp_max_syn_backlog = 65535
#保持 TIME_WAIT 狀態(tài)連接的最大數(shù)量,如果超過此值,TIME_WAIT 將立刻被清除并打印警告信息,默認為180000
net.ipv4.tcp_max_tw_buckets =5000
#每個網(wǎng)絡接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目
net.core.netdev_max_backlog =65535
TCP最大連接數(shù)
net.core.somaxconn = 65535
#預留用于接收緩沖的內(nèi)存默認值(字節(jié))
net.core.rmem_default = 8388608
#預留用于接收緩沖的內(nèi)存最大值(字節(jié))
net.core.rmem_max = 16777216
#預留用于發(fā)送緩沖的內(nèi)存默認值(字節(jié))
net.core.wmem_default = 8388608
#預留用于發(fā)送緩沖的內(nèi)存最大值(字節(jié))
net.core.wmem_maX = 16777216
#避免時間戳異常
net.ipv4.tcp_timestamps = 0
#系統(tǒng)中最多有多少個 TCP 套接字不被關聯(lián)到任何一個用戶文件句柄上,如果超過這個數(shù)字,連接將即刻被復位并打印警告信息,這個限制僅僅是為了防止簡單的DoS 攻擊
net.ipv4.tcp_max_orphans =3276800
生產(chǎn)環(huán)境配置
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000文章來源:http://www.zghlxwxcb.cn/news/detail-670981.html
?服務器展示:
文章來源地址http://www.zghlxwxcb.cn/news/detail-670981.html
到了這里,關于linux服務TCP參數(shù)配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!