状态码分类

  • 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
2
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

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
2
3
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout

fastcgi执行时间

1
max_execution_time