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

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 文件中,並執行

./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(單位是小時)。
相關文章
相關標籤/搜索