给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

image

执行sysctl -p,使其生效。

 

(4)也可以通过编辑更改/etc/security/limits.conf文件,对nginx用户进行限制,添加以下两行,保存退出就可生效:

nginx soft nofile 65535
nginx hard nofile 65535

image

更改此处,要在nginx.conf里指定nginx作为其用户,方可起作用,如nginx.conf配置文件:

user nginx nginx;

image

上面的一条语句即是指定nginx进程以nginx用户来起动。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值