看着Nginx在linux下效率不错,于是就想在Windows下搭建一个。刚好有个需求用上,用户如果由于一些网络原因无法访问主登录服务器,那么他还可以访问一些其他的备用服务器,由这些备用服务器做转发。从官网下载了一个1.14.1的Windows版本,部署在服务器上,偶尔做几个人的访问转发,没什么太大问题。
一切都很好,直到有天服务器厂商做设备升级失败,主登录服务器宕机,用户都到了备用服务器。用户的反映是很卡,一会通一会不通。用户量也不大啊,哪里会成这个样子。最终的后台服务性能很好,问题只可能出在nginx的转发下面。我初步的想法是配置文件有问题,估计哪里和linux下不一样。于是抓过来看了一下,worker_processes 为4,worker_connections 10240,连接数应该是够的。备用服务器负载也很低,基本没怎么用,哪里出问题了?
看看错误日志,一堆 maximum number of descriptors supported by select() is 1024 while connecting to upstream。原来是这样,Nginx你有这个限制,还放个Windows版本作什么,给我们当玩具玩么?于是网上搜了一下,发现其实人家是有说明的,只是我们没看到而已:http://nginx.org/en/docs/windows.html。
那只能放弃在Windows下用Nginx做转发了?又发现还有这么个网站http://nginx-win.ecsds.eu/,上面有修改后的版本下载。不过版本号都是1.11,1.13,1.15等单数。初步写了个程序做压力测试,即使超过1024个连接也没问题。那把单数版本的放到正式生产环境下吧?又有点担心稳定性,时不时要重启服务的话受不了。
最后用了没?阿里云和腾讯云都有负载均衡的产品卖,用的他们那个。