CentOS下給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
如圖所示:
如果要統計某個進程打開了多少個文件數,可以通過這個命令執行:
lsof |grep nginx|wc –l
圖中第二列為nginx進程ID號,也可以根據進程ID去查看nginx當前打開了哪些文件描述符,執行命令:
cd /proc/9811
這個目錄里可以看到與這個進程的相關信息。
可以看到nginx的進程ID 9811會在/proc目錄中生成,可以看看limits文件,執行:
more limits
(1)
在圖中的紅線為nginx可以打開的文件描述符的最大數量為51200,這個值的指定可以在nginx.conf的配置文件里指定,如下圖中的紅線處:
(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
可以看到當前的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
執行sysctl -p,使其生效。
(4)也可以通過編輯更改/etc/security/limits.conf文件,對nginx用戶進行限制,添加以下兩行,保存退出就可生效:
nginx soft nofile 65535
nginx hard nofile 65535
更改此處,要在nginx.conf里指定nginx作為其用戶,方可起作用,如nginx.conf配置文件:
user nginx nginx;
上面的一條語句即是指定nginx進程以nginx用戶來起動。
以下文章點擊率最高
Loading…