linux高併發應用類型對系統內核的優化

 操作系統內核參數優化

net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
 
寫到/etc/sysctl.conf 文件中,並執行 
 
  1. /sbin/sysctl -p 
使配置生效。
 
 
解釋:

net.ipv4.tcp_max_tw_buckets選項用來設定timewait的數量,默認是180 000,這裏設爲6000。

net.ipv4.ip_local_port_range選項用來設定允許系統打開的端口範圍。

net.ipv4.tcp_tw_recycle選項用於設置啓用timewait快速回收。

net.ipv4.tcp_tw_reuse選項用於設置開啓重用,允許將TIME-WAIT sockets重新用於新的TCP連接。

net.ipv4.tcp_syncookies選項用於設置開啓SYN Cookies,當出現SYN等待隊列溢出時,啓用cookies進行處理。

net.core.somaxconn選項的默認值是128, 這個參數用於調節系統同時發起的tcp連接數,在高併發的請求中,默認的值可能會導致鏈接超時或者重傳,因此,需要結合併發請求數來調節此值。

net.core.netdev_max_backlog選項表示當每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許發送到隊列的數據包的最大數目。

net.ipv4.tcp_max_orphans選項用於設定系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤立連接將立即被複位並打印出警告信息。這個限制只是爲了防止簡單的DoS***。不能過分依靠這個限制甚至人爲減小這個值,更多的情況下應該增加這個值。

net.ipv4.tcp_max_syn_backlog選項用於記錄那些尚未收到客戶端確認信息的連接請求的最大值。對於有128MB內存的系統而言,此參數的默認值是1024,對小內存的系統則是128。

net.ipv4.tcp_synack_retries參數的值決定了內核放棄連接之前發送SYN+ACK包的數量。

net.ipv4.tcp_syn_retries選項表示在內核放棄建立連接之前發送SYN包的數量。

net.ipv4.tcp_fin_timeout選項決定了套接字保持在FIN-WAIT-2狀態的時間。默認值是60秒。正確設置這個值非常重要,有時即使一個負載很小的Web服務器,也會出現大量的死套接字而產生內存溢出的風險。

net.ipv4.tcp_syn_retries選項表示在內核放棄建立連接之前發送SYN包的數量。

如果發送端要求關閉套接字,net.ipv4.tcp_fin_timeout選項決定了套接字保持在FIN-WAIT-2狀態的時間。接收端可以出錯並永遠不關閉連接,甚至意外宕機。

net.ipv4.tcp_fin_timeout的默認值是60秒。需要注意的是,即使一個負載很小的Web服務器,也會出現因爲大量的死套接字而產生內存溢出的風險。FIN-WAIT-2的危險性比FIN-WAIT-1要小,因爲它最多隻能消耗1.5KB的內存,但是其生存期長些。

net.ipv4.tcp_keepalive_time選項表示當keepalive啓用的時候,TCP發送keepalive消息的頻度。默認值是2(單位是小時)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章