Nginx中worker_connections的问题


//=============================================================================

转载自http://hi.baidu.com/u_chen/item/560f1504a0a77367d45a1184

查看日志,有一个[warn]: 3660#0: 20000 worker_connections are more than open file resource limit: 1024 !!

原来安装好nginx之后,默认最大的并发数为1024,如果你的网站访问量过大,已经远远超过1024这个并发数,那你就要修改worker_connecions这个值 ,这个值越大,并发数也有就大。当然,你一定要按照你自己的实际情况而定,也不能设置太大,不能让你的CPU跑满100%。

所以,当你修改提高了配置文件中的worker_connections值,然后重启nginx,你就会在日志里发现,最前面我们讲到的这一个warn警告提示,大概的意思就是: 20000并发连接已经超过了打开文件的资源限制:1024!在这种情况下,我们就要修改配置文件,添加一行来解除这个限制,这就好像是apache中的ServerLimit。

打开配置文件在"event"这行上面添加这一行:

worker_rlimit_nofile   xxxxx;           ####Specifies the value for maximum file descriptors that can be opened by this process.

注意:设置了这个后,你修改worker_connections值时,是不能超过worker_rlimit_nofile的这个值,不然又会有前面的那个warn提示。

保存配置文件,退出重启nginx。

 

如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式:

   最大连接数 = worker_processes * worker_connections/4

查看相关资料,生产环境中worker_connections 建议值最好超过9000,计划将一台nginx 设置为10240,再观察一段时间。




  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据引用[1]和引用[2]的内容,worker_connections的设置需要考虑两个重要指标:内存和操作系统级别的"进程最大可打开文件数"。每个连接数大约占用328字节的内存,因此可以通过计算来确定连接数所占用的内存大小。同时,进程最大可打开文件数受限于操作系统,可以通过ulimit -n命令查询。根据引用[3],nginx提供了worker_rlimit_nofile指令,可以设置可用的描述符数量,该指令的值将覆盖ulimit的值。 因此,要合理设置worker_connections,需要考虑服务器的内存和操作系统的进程最大可打开文件数。根据服务器的实际情况,可以根据以下几点进行调优: 1. 内存:根据服务器的可用内存大小,计算出每个连接所占用的内存大小,并根据服务器的内存情况,设置合适的worker_connections数量,以避免内存不足的问题。 2. 进程最大可打开文件数:通过ulimit -n命令查询操作系统的进程最大可打开文件数,如果需要增加该值,可以使用worker_rlimit_nofile指令进行设置。 综合考虑服务器的内存和操作系统的进程最大可打开文件数,可以适当调大worker_connections的值,以提高nginx的并发连接能力。但是需要注意,过大的worker_connections值可能会导致内存占用过高,从而影响服务器的性能。因此,需要根据服务器的实际情况进行调优,找到一个合适的worker_connections值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值