一、502问题
1、报错:upstream sent too big header while reading response header from upstream
这个是说nginx缓冲区不足,需要增加缓冲区大小。
解决办法:
1 2 3 4 5 6 7 8 9 10 11 | http { ...... fastcgi_connect_timeout 300; fastcgi_send_timeout 60; fastcgi_read_timeout 60; fastcgi_buffer_size 128k; fastcgi_buffers 4 128k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 512k; ...... } |
---|
如果设置了反向代理,这个可能是由与后端返回的header过大,造成nginx处理不过来导致。解决办法:
1 2 3 4 5 6 7 | location / { ...... proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; ...... } |
---|
2、php-fpm进程数过少导致php没有足够的子进程来响应处理nginx的请求,需要增加进程数,另外子进程设置多少和设置成static或者dynamic需要根据机器内存的大小来设置一个合理的值,具体可参考本站的其他博客。
3、超时时间设置过短
例如
- 部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间
1 2 3 | fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; |
---|
- php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300或者更高
二、too many open files
nginx工作进程打开的最多文件描述符限制,理论上是最多打开文件数(ulimit -n)与nginx工作进程相除。
修改nginx的配置文件即可:
1 2 | worker_processes 8; worker_rlimit_nofile 200000; |
---|