1. 程式人生 > >nginx linux 1萬併發設定

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就可以扛壓了