當前位置:
首頁 >
高流量大并发Linux TCP性能调优
發布時間:2025/3/21
46
豆豆
生活随笔
收集整理的這篇文章主要介紹了
高流量大并发Linux TCP性能调优
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其實主要是手里面的跑openvpn服務器。因為并沒有明文禁p2p(哎……想想那么多流量好像不跑點p2p也跑不完),所以造成有的時候如果有比較多人跑BT的話,會造成VPN速度急劇下降。
本文參考文章為:
優化Linux下的內核TCP參數來提高服務器負載能力
Linux Tuning
本文所面對的情況為:
高并發數
高延遲高丟包(典型的美國服務器)
值得注意的是,因為openvz的VPS權限比較低,能夠修改的地方比較少,所以使用openvz的VPS作VPN服務器是非常不推薦的。
我們通過修改 /etc/sysctl.conf 來達到調整的目的,注意修改完以后記得使用:
sysctl -p
來使修改生效。
首先,針對高并發數,我們需要提高一些linux的默認限制:
fs.file-max = 51200
#提高整個系統的文件限制
net.ipv4.tcp_syncookies = 1
#表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
#表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 0
#表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉;
#為了對NAT設備更友好,建議設置為0。
net.ipv4.tcp_fin_timeout = 30
#修改系統默認的 TIMEOUT 時間。
net.ipv4.tcp_keepalive_time = 1200
#表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改為20分鐘。
net.ipv4.ip_local_port_range = 10000 65000 #表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為10000到65000。(注意:這里不要將最低值設的太低,否則可能會占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網絡連接數。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系統同時保持TIME_WAIT的最大數量,如果超過這個數字,TIME_WAIT將立刻被清除并打印警告信息。
#額外的,對于內核版本新于**3.7.1**的,我們可以開啟tcp_fastopen:
net.ipv4.tcp_fastopen = 3
其次,針對大流量高丟包高延遲的情況,我們通過增大緩存來提高 TCP 性能,自己看E文注釋吧……感覺我翻譯出來各種味道不對 = =:
這里面涉及到一個 TCP 擁塞算法的問題,你可以用下面的命令查看本機提供的擁塞算法控制模塊:
sysctl net.ipv4.tcp_available_congestion_control
如果沒有下文提到的htcp,hybla算法,你可以嘗試通過modprobe啟用模塊:
/sbin/modprobe tcp_htcp
/sbin/modprobe tcp_hybla
對于幾種算法的分析,詳情可以參考下: TCP擁塞控制算法 優缺點 適用環境 性能分析 ,但是這里面沒有涉及到專門為衛星通訊設計的擁塞控制算法:Hybla。根據各位大神的實驗,我們發現Hybla算法恰好是最適合美國服務器的 TCP 擁塞算法,而對于日本服務器,個人想當然的認為htcp算法應該可以比默認的cubic算法達到更好的效果。但是因為htcp算法恰好沒有編入我們所使用的VPS中,所以沒辦法測試。
#設置 TCP 擁塞算法為 hybla
net.ipv4.tcp_congestion_control=hybla
| # increase TCP max buffer size settable using setsockopt() net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 # increase Linux autotuning TCP buffer limit net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 # increase the length of the processor input queue net.core.netdev_max_backlog = 250000 # recommended for hosts with jumbo frames enabled net.ipv4.tcp_mtu_probing=1 |
總結
以上是生活随笔為你收集整理的高流量大并发Linux TCP性能调优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统计一下你写过多少代码
- 下一篇: 【Linux】tcp缓冲区大小的默认值、