侧边栏壁纸
  • 累计撰写 223 篇文章
  • 累计创建 205 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

LNMP--常见的502问题

zhanjie.me
2018-01-20 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

LNMP--常见的502问题

​ ​ 对于LNMP来说,最常见的就是502问题了。配置完环境后,一访问网站直接提示“502 Bad Gateway”。出现502的原因大致分为两种。

​ (1)配置错误

​ ​ 我们在nginx中配置过这么一段。

   location ~ \.php$ {

        include fastcgi_params;

        fastcgi_pass unix:/tmp/php-fcgi.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

    }

​ ​ 如果把fastcgi_pass后面的路径配置错了,那么就会出现502的错误,因为nginx找不到php-fpm了。fastcgi_pass后面可以跟socket也可以跟ip:port,默认监听地址为 127.0.0.1:9000。

​ (2)资源耗尽

​ ​ LNMP架构处理php时,是nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,而我们又没有给php-fpm配置足够的子进程,那么总有php-fpm资源耗尽的时候,一旦耗尽nginx则找不到php-fpm,此时就会导致502出现。那这时候的解决方案就是去调整php-fpm.conf中的pm.max_children数值,使其增加。但也不能无限设置,毕竟服务器的资源有限,根据经验,4G内存机器如果只跑php-fpm和nginx,不跑mysql服务,pm.max_children可以设置为150,尽量不要超过该数值,8G内存可以设置为300,以此类推。

​ ​ 当然,除了这两种情况外,也会有其他情况导致502发生,但很少很少。我们有一个办法可以去排查此类问题。就是要借助nginx的错误日志。在nginx.conf中有一个参数是 error_log ,它可以指定错误日志的路径,而错误日志其实还能定义级别。默认是 crit,该级别是最严谨的,记录日志也是最少的,有可能一些小问题我们不能发现,所以有必要把日志级别调整一下,比如“error_log /usr/local/nginx/logs/nginx_error.log debug;”,这样显示的日志就会有很多,不要忘记当调试完后要把级别改回 crit,否则 error_log 会把磁盘撑爆。

0

评论区