502错误

测试环境运行很OK,但是放到线上就偶尔出现502错误。

分析:

Nginx 502 Bad Gateway的含义是请求的CGI已经执行,但是由于某种原因没有执行完毕而导致CGI进程终止。

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的CGI。

我们这边应该都是部分耗时操作引起了超时,因此需要增大NG的超时时间。

NG的http节
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_buffer_size 1024k;
fastcgi_buffers 32 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;

相应的默认参数
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;



更加深入的问题根节:

量一上去就会core,测试环境和vm均OK,fcgi本身的core文件信息太少无法定位具体是DFS还是其他问题,只能找规律。最后发现是ulimit的-c和-u参数设置太小了。

修改/etc/security/limits.conf nofile和nproc,同时在root和user环境都ulimit -c -u。重启后修复

其它问题:

1. ng版本太低导致stream流的图片上传失败
2. PAM验证导致运行到一段时间后服务器无法登陆,需要暴力破坏环境,令一定的应用挂掉才连上来
3. tw部分机器没改。
4. MaxStartups连接数太低
5. nofile太低

你可能感兴趣的:(WEB编程)