HTTP 状态码
1、状态码分类
- 1xx:信息,服务器收到请求,需要请求者继续操作
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
2、常用状态码
200:请求成功
301:永久重定向
302:临时移动
400 bad request:客户端请求语法错误
401 unauthorized:客户端没有权限
403 forbidden:服务器拒绝客户端请求
404 not found:客户端请求资源不存在
500 Internal Server Eerro:服务器内部错误
502 bad gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503 Service Unavailable 超载或系统维护
504 Gateway timeout:网关超时
3、502 的原因及解决方法
原因:nginx将请求提交给网关(php-fpm)处理异常导致
1)fastcgi 缓冲区设置过小
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
2)php-cgi的进程数设置过少
查看FastCgi进程数:netstat -anpo | grep "php-cgi"| wc -l
调整参数最大子进程数:max_children
一般按照单个进程20M计算需要需要设置的子进程数
3)max_requests(内存溢出或频繁重启)
参数指明每个children最多能处理的请求数量,到达最大值之后会重启children。
设置过小可能导致频繁重启children:
php将请求轮询给每个children,在大流量的场景下,每一个children 到达最大值的时间差不多,如果设置过小可能多个children 在同一时间关闭,nginx无法将请求转发给php-fpm,cpu降低,负载变高。
设置过大可能导致内存泄露
4)php执行时间超过nginx等待时间
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout
5)fastcgi执行时间
max_execution_time