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 会把磁盘撑爆。
评论区