Nginx-当客户端大量持续请求Nginx下的FastCGI程序时,经常出现网关超时,该如何处理?
我用的是Nginx-1.0.13,配置FastCGI连接及读写超时为30秒。我的FastCGI程序按照官网的例子编写,C代码实现,同时启用300线程。客户端程序为300个进程,每个进程每隔1秒发起一次请求,如果FastCGI收到请求,会立即回应(通信的数据不超过5K)。遇到的问题是,当客户端持续发送请求时,Nginx中会出现大量的upstream timed out (110: Connection timed out) 。按照网上给出的解决方案,修改Nginx配置后问题照旧。
我的FastCGI源代码与官网示例代码结构基本一致:http://www.fastcgi.com/devkit/examples/threaded.c。使用的客户端程序和FastCGI程序在同一台机器上,64位RHEL5.5虚拟机,8G内存,4核CPU。望高手指点一下~
Nginx核心配置如下:
worker_processes 4;
events {
worker_connections 10240;
}
location ~ .cgi$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.cgi;
include fastcgi_params;
fastcgi_connect_timeout 30;
fastcgi_send_timeout 30;
fastcgi_read_timeout 30;
fastcgi_buffers 1000 500k;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
自问自答一下。经过将代码和Nginx模块分离,单独测试后,发现出现网关超时的最主要原因是Nginx写日志量较大,每50000条访问记录,日志大概400MB。经过调整策略,只记录关键信息后,客户端和服务器并发数为500时,仍未出现网关超时错误~