目录
一、问题背景
二、问题分析
三、解决办法
一、问题背景
Windows版本因为文件访问句柄数被限制为1024了,当大并发量访问时就会无法响应。会有如下错误提示:maximum number of descriptors supported by select() is 1024 while connecting to upstream。
或者1024 worker_connections are not enough报错。
二、问题分析
其实windows版本修改worker_connections以及worker_rlimit_nofile 参数都是没有任何卵用,因为nginx官网只是将windows版本作为测试使用,在编译的时候文件访问句柄数被限制为1024,无法通过修改配置参数解决,我们只能使用针对windows重新编译的版本。使用已经编译好的,修改过--with-cc-opt=-DFD_SETSIZE=1024参数的二进制程序。
通过nginx -V 我们可以看到当前--with-cc-opt=-DFD_SETSIZE=1024参数的限制1024的
三、解决办法
自己重新编译,或者 推荐使用http://nginx-win.ecsds.eu/download/ 。
1.选择一个最新的版本进行下载
2.将zip包上传到服务器上、解压
3.在服务器上执行注册表程序
4.将nginx_basic.exe拷贝原nginx安装目录下
5.关闭原来的nginx进程
在nginx.exe目录中,shift + 右键,点击“在此处打开cmd” 登录到cmd中,执行nginx -s stop停止nginx程序.
6.备份原来的nginx.exe程序
将名字修改为nginx_bak.exe
7.将nginx_basic.exe修改名字为nginx.exe
8.启动nginx的服务
在nginx.exe目录中,shift + 右键,点击“在此处打开cmd”
登录到cmd中,执行start nginx 启动nginx程序
这样就可以了,就完成了nginx程序的替换,最新的nginx.exe程序,使用的就是最新的参数进行编译的。
通过nginx -V查看限制参数
nginx版本是1.25.4.1,最新文件描述符限制--with-cc-opt=-DFD_SETSIZE=32768突破了1024限制
四、查看nginx连接状态
修改前(无限接近于上限1024,所以部分连接会报错)
修改前(突破限制,直接起飞)