nginx linux 1萬併發設定
nginx 是一個高效的伺服器,但是如果只是安裝,沒有做什麼配置的話,那麼它最多也就只能承受1000個左右的併發
那麼如何可以讓nginx能輕鬆應對5000甚至10000的高併發呢,下面就來進得討論一下
nginx 響應請求的過程
1,建立soket連線
2,開啟檔案(如 index.html),返回
就是這麼簡單
那麼對於第一步, 我們就會希望可以找開更多的socket連線
第二步,就是可以找開更多的檔案
一般的作業系統,對socket找開的數量是有限制的,對找開檔案多少也是有限制的
下面就從這兩個方面來著手處理
1.對socket方面的優化
這一步又要分為兩個方面的設定:
1)作業系統(linux)的設定:
@ socket 的最大連線數的修改 在centos中修改socket最大連線數的方法 (這裡的檔案是程序檔案已經在運得的,不能使用vim編輯器修改),方法如下
echo 50000 > /proc/sys/net/core/somaxconn (系統預設的值是128,現在改成50000)
@ 加快系統的tcp回收機制 (系統預設tcp在斷開後還會存活一段時間) 方法如下
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle (系統預設是0,修改為1)
@ 允許空的tcp回收利用 方法如下
echo 1 >/proc/sys/net/ipv4/tcp_tw_reuse (系統預設為0,修改為1)
@ 讓系統不做洪水抵禦保護,(當系統檢測到80埠在大量的請求時,會自動給返回資訊中增加 cookie ,還驗證客戶端身份,從而避免受到攻擊,但這時只是高併發,並不是攻擊,所以要把這個抵禦機制給關閉) 方法如下
echo 0 >/proc/sys/net/ipv4/tcp_syncookie (系統預設為1,修改為0)
2)nginx的設定:
@ 允許子程序開啟的連線 ,在event段中 worker_connections 1024; nginx預設能開啟1024個連線
修改 worker_connections 10000; 修改為可以開啟10000個socket連線
2.對檔案系統方面的優化
1)作業系統方面:
@ 讓作業系統允許開啟更多的檔案 ulimit -n(設定一個比較大的值)
ulimit -n 10240; (把作業系統允許開啟檔案的最大值設為10240,原本的預設值是1024)
2)nginx 配置子程序可以開啟的檔案個數
在nginx全域性的配置中 worker_processes 1;下面加上worker_limit_nofile 10240;
@ work_limit_nofile 10240 ; (nginx的子程序可以開啟10240個檔案)
以上幾個方面都修改完畢後 你的nginx就可以扛壓了