http状态码讲解
状态码分类
- 1xx:信息,服务器收到请求,需要请求者继续操作
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
常用状态码
- 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:网关超时
502 的原因及解决方法
原因:nginx将请求提交给网关(php-fpm)处理异常导致
fastcgi 缓冲区设置过小
1 | fastcgi_buffers 8 16k; |
php-cgi的进程数设置过少
查看FastCgi进程数:netstat -anpo | grep “php-cgi”| wc -l
调整参数最大子进程数:max_children
一般按照单个进程20M计算需要需要设置的子进程数
max_requests(内存溢出或频繁重启)
参数指明每个children最多能处理的请求数量,到达最大值之后会重启children。
设置过小可能导致频繁重启children:
php将请求轮询给每个children,在大流量的场景下,每一个children 到达最大值的时间差不多,如果设置过小可能多个children 在同一时间关闭,nginx无法将请求转发给php-fpm,cpu降低,负载变高。
设置过大可能导致内存泄露
php执行时间超过nginx等待时间
1 | fastcgi_connect_timeout |
fastcgi执行时间
1 | max_execution_time |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 懒猫!
评论