○、结论

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​