天天看點

修改Linux核心參數提高Nginx伺服器在高的時候的性能

修改Linux核心參數提高Nginx伺服器在高的時候的性能

并發 Linux下高并發的Nginx伺服器,當TCP TIME_WAIT套接字數量經常達到兩、三萬,伺服器很容易被拖死。通過修改Linux核心參數,可以減少Nginx伺服器的TIME_WAIT套接字數量。

vi /etc/sysctl.conf

增加以下幾行:

引用

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 1024    65000

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000

簡單說明:

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 = 1 表示開啟TCP連接配接中TIME-WAIT sockets的快速回收,預設為0,表示關閉。

net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀态的時間。

net.ipv4.tcp_keepalive_time = 1200 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。預設是2小時,改為20分鐘。

net.ipv4.ip_local_port_range = 1024    65000 表示用于向外連接配接的端口範圍。預設情況下很小:32768到61000,改為1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192 表示SYN隊列的長度,預設為1024,加大隊列長度為8192,可以容納更多等待連接配接的網絡連接配接數。

net.ipv4.tcp_max_tw_buckets = 5000 表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字将立刻被清除并列印警告資訊。預設為180000,改為5000。對于Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對于Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid伺服器被大量的TIME_WAIT套接字拖死。

/sbin/sysctl -p

Nginx優化

使用FastCGI 緩存

fastcgi_cache TEST

開啟FastCGI 緩存并且為其制定一個名稱。個人感覺開啟緩存非常有用,可以有效降低CPU 負載,并且防止502 錯誤。

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2

keys_zone=TEST:10m

inactive=5m;

這個指令為FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動删除時間。

壓力測試,用 webbench ,測試結果隻能做為參考。

後續還有其他之前做過的參數修改,有空一起分享下。歡迎朋友一起交流,讨論。扣扣:柒⑥柒陸叁⑤叁伍

     本文轉自jimmy_lixw 51CTO部落格,原文連結:http://blog.51cto.com/jimmyli/600839,如需轉載請自行聯系原作者