[轉載] 高流量大並發Linux TCP 效能調優

來源:互聯網
上載者:User

標籤:

原文: http://cenwj.com/2015/2/25/19

本文參考文章為:

最佳化Linux下的核心TCP參數來提高伺服器負載能力

Linux Tuning

本文所面對的情況為:

  1. 高並發數
  2. 高延遲高丟包(典型的美國伺服器)

值得注意的是,因為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文注釋吧……感覺我翻譯出來各種味道不對 = =:

 

# 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

這裡面涉及到一個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

[轉載] 高流量大並發Linux TCP 效能調優

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.