高流量大并发Linux TCP性能调优
生活随笔
收集整理的這篇文章主要介紹了
高流量大并发Linux TCP性能调优
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
其實(shí)主要是手里面的跑openvpn服務(wù)器。因?yàn)椴](méi)有明文禁p2p(哎……想想那么多流量好像不跑點(diǎn)p2p也跑不完),所以造成有的時(shí)候如果有比較多人跑BT的話(huà),會(huì)造成VPN速度急劇下降。
本文參考文章為:
優(yōu)化Linux下的內(nèi)核TCP參數(shù)來(lái)提高服務(wù)器負(fù)載能力
Linux Tuning
本文所面對(duì)的情況為:
高并發(fā)數(shù)
高延遲高丟包(典型的美國(guó)服務(wù)器)
值得注意的是,因?yàn)閛penvz的VPS權(quán)限比較低,能夠修改的地方比較少,所以使用openvz的VPS作VPN服務(wù)器是非常不推薦的。
我們通過(guò)修改 /etc/sysctl.conf 來(lái)達(dá)到調(diào)整的目的,注意修改完以后記得使用:
sysctl -p
來(lái)使修改生效。
首先,針對(duì)高并發(fā)數(shù),我們需要提高一些linux的默認(rèn)限制:
fs.file-max = 51200
#提高整個(gè)系統(tǒng)的文件限制
net.ipv4.tcp_syncookies = 1
#表示開(kāi)啟SYN Cookies。當(dāng)出現(xiàn)SYN等待隊(duì)列溢出時(shí),啟用cookies來(lái)處理,可防范少量SYN攻擊,默認(rèn)為0,表示關(guān)閉;
net.ipv4.tcp_tw_reuse = 1
#表示開(kāi)啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉;
net.ipv4.tcp_tw_recycle = 0
#表示開(kāi)啟TCP連接中TIME-WAIT sockets的快速回收,默認(rèn)為0,表示關(guān)閉;
#為了對(duì)NAT設(shè)備更友好,建議設(shè)置為0。
net.ipv4.tcp_fin_timeout = 30
#修改系統(tǒng)默認(rèn)的 TIMEOUT 時(shí)間。
net.ipv4.tcp_keepalive_time = 1200
#表示當(dāng)keepalive起用的時(shí)候,TCP發(fā)送keepalive消息的頻度。缺省是2小時(shí),改為20分鐘。
net.ipv4.ip_local_port_range = 10000 65000 #表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為10000到65000。(注意:這里不要將最低值設(shè)的太低,否則可能會(huì)占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN隊(duì)列的長(zhǎng)度,默認(rèn)為1024,加大隊(duì)列長(zhǎng)度為8192,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系統(tǒng)同時(shí)保持TIME_WAIT的最大數(shù)量,如果超過(guò)這個(gè)數(shù)字,TIME_WAIT將立刻被清除并打印警告信息。
#額外的,對(duì)于內(nèi)核版本新于**3.7.1**的,我們可以開(kāi)啟tcp_fastopen:
net.ipv4.tcp_fastopen = 3
其次,針對(duì)大流量高丟包高延遲的情況,我們通過(guò)增大緩存來(lái)提高 TCP 性能,自己看E文注釋吧……感覺(jué)我翻譯出來(lái)各種味道不對(duì) = =:
這里面涉及到一個(gè) TCP 擁塞算法的問(wèn)題,你可以用下面的命令查看本機(jī)提供的擁塞算法控制模塊:
sysctl net.ipv4.tcp_available_congestion_control
如果沒(méi)有下文提到的htcp,hybla算法,你可以嘗試通過(guò)modprobe啟用模塊:
/sbin/modprobe tcp_htcp
/sbin/modprobe tcp_hybla
對(duì)于幾種算法的分析,詳情可以參考下: TCP擁塞控制算法 優(yōu)缺點(diǎn) 適用環(huán)境 性能分析 ,但是這里面沒(méi)有涉及到專(zhuān)門(mén)為衛(wèi)星通訊設(shè)計(jì)的擁塞控制算法:Hybla。根據(jù)各位大神的實(shí)驗(yàn),我們發(fā)現(xiàn)Hybla算法恰好是最適合美國(guó)服務(wù)器的 TCP 擁塞算法,而對(duì)于日本服務(wù)器,個(gè)人想當(dāng)然的認(rèn)為htcp算法應(yīng)該可以比默認(rèn)的cubic算法達(dá)到更好的效果。但是因?yàn)閔tcp算法恰好沒(méi)有編入我們所使用的VPS中,所以沒(méi)辦法測(cè)試。
#設(shè)置 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 |
總結(jié)
以上是生活随笔為你收集整理的高流量大并发Linux TCP性能调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 统计一下你写过多少代码
- 下一篇: 高性能网络编程7--tcp连接的内存使用