Nginx For Windows 关于 worker_connections 不生效问题

柴英光
2023-12-01

○、结论

Nginx For Windows 建议使用

http://nginx-win.ecsds.eu/

下载 nginx 1.17.0.1 Crow

一、起因

项目中有一个 API 服务,对客户端通信进行支持,大概 1w 客户端,每分钟都会进行通信。

高峰期的时候服务负载较高,为了防止服务宕机,影响用户,所以增加 Nginx 进行负载。

二、Windows 使用 Nginx

之前在 Linux 中使用 Nginx 并没有什么异常,现在的服务在 Windows Server 服务器上,所以就找 Nginx For Windows 的版本试一试。

nginx for Windows 下载

nginx.conf 完整配置(负载均衡)如下:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024000;
}


http {
    upstream as_server {
        server 127.0.0.1:8901;
        server 127.0.0.1:8902;
    }

    server {
        listen 8099;
        server_name  localhost;
        location / {
            proxy_pass http://as_server;
        }
    }
}

三、worker_connections 坑

运行之后没一会,服务就不响应了,查看错误日志(logs\error.log)之后,发现提示 worker_connections 超出最大值了,但是配置文件里明确配置的 1024000 ,看配置不应该出现此问题。

2019/07/16 21:28:49 [error] 13052#6092: *5451 maximum number of descriptors supported by select() is 1024 while waiting for request, client: 10.73.60.48, server: 0.0.0.0:8099
2019/07/16 21:28:49 [error] 13052#6092: *5454 maximum number of descriptors supported by select() is 1024 while waiting for request, client: 10.72.160.163, server: 0.0.0.0:8099

多番查询后,发现 nginx for windows nginx-1.17.1 版本的 worker_connections 配置是编译在软件里了,如果要改需要重新编译。

四、最终的解决方案

访问以下网址,可查看信息:

http://nginx-win.ecsds.eu/

以下是最新版本下载地址:

nginx 1.17.0.1 Crow

 类似资料: