Linux系統優化(1)---給nginx反向代理做優化

系統環境:Centos 5.5 X86

對於前端nginx的七層反向代理,時間長了,它會佔用系統很多的文件描述符。隨着併發的增大,原有系統默認的1024個文件描述符肯定會不夠用,時間越長,系統可能會報如下錯誤:

open files limits…..

文件描述符是一個簡單的整數,用以標明每一個被進程所打開的文件和socket。第一個打開的文件是0,第二個是1,依此類推。Linux操作系統通常給每個進程能打開的文件數量強加一個限制,Linux通常有一個系統級1024的限制。

 

查看nginx進程所佔用的文件描述符,可以執行命令:

lsof   :list open files,該命令用於列出打開的文件

lsof  |grep nginx|more

如圖所示:

Image00216

 

如果要統計某個進程打開了多少個文件數,可以通過這個命令執行:

lsof  |grep  nginx|wc –l

 

圖中第二列爲nginx進程ID號,也可以根據進程ID去查看nginx當前打開了哪些文件描述符,執行命令:

cd   /proc/9811

Image00220

這個目錄裏可以看到與這個進程的相關信息。

可以看到nginx的進程ID  9811會在/proc目錄中生成,可以看看limits文件,執行:

more   limits

Image00221

 

(1)

在圖中的紅線爲nginx可以打開的文件描述符的最大數量爲51200,這個值的指定可以在nginx.conf的配置文件裏指定,如下圖中的紅線處:

Image00222

 

(2)

也可以在shell裏指定,使用ulimit工具指定,該工具命令在系統裏允許提供對shell或進程可用資源的控制

ulimit   : Provides  control over the resources available to the shell and to processes started by it, on systems that allow such control.

查看當前的配置,可以執行命令:

ulimit    -a

Image00223

可以看到當前的open  files最大隻有1024,可以使用ulimit  -SHn  65535來進行更改

 

(3)也可以通過更改內核參數更改

查找file-max的內核參數:

sysctl  -a|grep file-max

更改file-max的內核參數:

sysctl  -w  file-max=65535

要想永久生效,可以通過更改sysctl的文件,編輯/etc/sysctl.conf文件,添加以下一行,如圖示:

fs.file-max=65535

p_w_picpath

執行sysctl  -p,使其生效。

 

(4)也可以通過編輯更改/etc/security/limits.conf文件,對nginx用戶進行限制,添加以下兩行,保存退出就可生效:

nginx           soft     nofile          65535
nginx           hard    nofile          65535

p_w_picpath

更改此處,要在nginx.conf裏指定nginx作爲其用戶,方可起作用,如nginx.conf配置文件:

user  nginx  nginx;

p_w_picpath

上面的一條語句即是指定nginx進程以nginx用戶來起動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章