Nginx的10萬並發核心參數最佳化,nginx10萬核心參數

來源:互聯網
上載者:User

Nginx的10萬並發核心參數最佳化,nginx10萬核心參數
關於核心參數的最佳化:net.ipv4.tcp_max_tw_buckets = 6000
timewait的數量,預設是180000。
net.ipv4.ip_local_port_range = 1024 65000
允許系統開啟的連接埠範圍。
net.ipv4.tcp_tw_recycle = 1
啟用timewait快速回收。
net.ipv4.tcp_tw_reuse = 1
開啟重用。允許將TIME-WAIT sockets重新用於新的TCP串連。
net.ipv4.tcp_syncookies = 1
開啟SYN Cookies,當出現SYN 等待隊列溢出時,啟用cookies來處理。
net.core.somaxconn = 262144
web 應用中 listen 函數的 backlog 預設會給我們核心參數的 net.core.somaxconn 限制到
128,而nginx定義的NGX_LISTEN_BACKLOG 預設為511,所以有必要調整這個值。
net.core.netdev_max_backlog = 262144
每個網路介面接收資料包的速率比核心處理這些包的速率快時,允許送到隊列的資料包
的最大數目。
net.ipv4.tcp_max_orphans = 262144
系統中最多有多少個TCP通訊端不被關聯到任何一個使用者檔案控制代碼上。如果超過這個數
字,孤兒串連將即刻被複位並列印出警告資訊。這個限制僅僅是為了防止簡單的DoS攻擊,
不能過分依靠它或者人為地減小這個值,更應該增加這個值(如果增加了記憶體之後)。
net.ipv4.tcp_max_syn_backlog = 262144
記錄的那些尚未收到用戶端確認資訊的串連請求的最大值。對於有128M記憶體的系統而
言,預設值是1024,小記憶體的系統則是128。
net.ipv4.tcp_timestamps = 0
時間戳記可以避免序號的卷繞。一個1Gbps的鏈路肯定會遇到以前用過的序號。時間
戳能夠讓核心接受這種“異常”的資料包。這裡需要將其關掉。
net.ipv4.tcp_synack_retries = 1
為了開啟對端的串連,核心需要發送一個SYN並附帶一個回應前面一個SYN的ACK。也
就是所謂三向交握中的第二次握手。這個設定決定了核心放棄串連之前發送 SYN+ACK 包的
數量。
net.ipv4.tcp_syn_retries = 1
在核心放棄建立串連之前發送SYN 包的數量。
net.ipv4.tcp_fin_timeout = 1
如果通訊端由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端
可以出錯並永遠不關閉串連,甚至意外當機。預設值是60 秒。2.2 核心的通常值是180 秒,
2 你可以按這個設定,但要記住的是,即使你的機器是一個輕載的 WEB 伺服器,也有因為大
量的死通訊端而記憶體溢出的風險,FIN- WAIT-2 的危險性比FIN-WAIT-1 要小,因為它最多隻
能吃掉1.5K記憶體,但是它們的生存期長些。 

net.ipv4.tcp_keepalive_time = 30
當keepalive起用的時候,TCP發送keepalive訊息的頻度。預設是2 小時。
    #以下可能需要載入ip_conntrack模組 modprobe ip_conntrack ,有文檔說防火牆開啟情況下此模組失效

#縮短established的超時時間

net.netfilter.nf_conntrack_tcp_timeout_established = 180

#CONNTRACK_MAX 允許的最大跟蹤串連條目,是在核心記憶體中netfilter可以同時處理的“任務”(串連跟蹤條目)

net.netfilter.nf_conntrack_max = 1048576

net.nf_conntrack_max = 1048576

  執行生效:/sbin/sysctl -p 一般來說nginx設定檔中對最佳化比較有作用的為以下幾項:
worker_processes 8;
3 nginx進程數,建議按照cpu數目來指定,一般為它的倍數。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000
01000000 10000000;
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一
個進程分配到多個cpu。
worker_rlimit_nofile 102400;
這個指令是指當一個nginx進程開啟的最多檔案描述符數目,理論值應該是最多開啟文
件數(ulimit -n)與nginx進程數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit
-n的值保持一致。
use epoll;
使用epoll的I/O模型,這個不用說了吧。
worker_connections 102400;
每個進程允許的最多串連數,理論上每台 nginx 伺服器的最大串連數為
worker_processes*worker_connections。
keepalive_timeout 60;
keepalive逾時時間。
client_header_buffer_size 4k;
用戶端要求標頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般一個請求
頭的大小不會超過 1k,不過由於一般系統分頁都要大於 1k,所以這裡設定為分頁大小。分
頁大小可以用命令getconf PAGESIZE取得。
open_file_cache max=102400 inactive=20s;
這個將為開啟檔案指定緩衝,預設是沒有啟用的,max指定緩衝數量,建議和開啟檔案
數一致,inactive 是指經過多長時間檔案沒被請求後刪除緩衝。
open_file_cache_valid 30s;
這個是指多長時間檢查一次緩衝的有效資訊。
open_file_cache_min_uses 1;
open_file_cache指令中的inactive 參數時間內檔案的最少使用次數,如果超過這個數字,文
件描述符一直是在緩衝中開啟的,如上例,如果有一個檔案在inactive 時間內一次沒被使用,
它將被移除。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.