我的知识记录

网站CDN回源502 Bad Gateway_性能优化与预防_从检测到修复_运维经验

502 Bad Gateway和504 Gateway Timeout是两种常见的网关错误,容易混淆。502是上游服务器返回了无效响应(如连接被拒绝、连接重置、返回格式错误),504是上游服务器超时未响应。两者的原因和处理方法不同,需要准确区分。本文重点讲解502 Bad Gateway,同时对比504的区别,帮助站长准确判断和处理。

第三步是检查Nginx配置。Nginx的fastcgi_pass配置错误会导致502,如PHP-FPM的监听地址或端口不正确。PHP-FPM默认监听127.0.0.1:9000或unix socket(如/run/php/phpX.X-fpm.sock),Nginx的fastcgi_pass必须与PHP-FPM的listen配置一致。检查Nginx错误日志:/var/log/nginx/error.log,502错误会记录具体原因,如"connect() failed (111: Connection refused) while connecting to upstream"表示PHP-FPM未启动或端口不对,"upstream sent invalid header"表示PHP返回了无效响应。根据日志中的错误信息针对性处理。

排查502错误的第一步是确认后端服务状态。Nginx+PHP-FPM架构下,最常见的原因是PHP-FPM服务停止或崩溃。检查PHP-FPM状态:systemctl status php-fpm(Linux),查看服务是否运行。如果服务停止,启动PHP-FPM:systemctl start php-fpm。查看PHP-FPM的错误日志,通常在/var/log/php-fpm/或/var/log/phpX.X-fpm.log,日志中会记录崩溃原因。如果PHP-FPM频繁崩溃,可能是内存不足、PHP扩展冲突、程序死循环等原因,需要进一步排查。

第四步是检查PHP-FPM配置。PHP-FPM的进程数配置不合理会导致502。pm.max_children设置过小,高峰期请求排队超时;设置过大,内存不足导致OOM。根据服务器内存调整max_children,每个PHP-FPM进程约占用50-100MB内存,max_children = 可用内存 / 单进程内存。pm.start_servers、pm.min_spare_servers、pm.max_spare_servers根据max_children比例设置。request_terminate_timeout设置PHP脚本最大执行时间,防止死循环占用进程,建议设置为30-60秒。request_slowlog_timeout记录慢请求,帮助排查性能问题。修改配置后重启PHP-FPM。

解决方案汇总:后端服务停止→启动服务并设置开机自启;资源不足→升级服务器配置或优化程序降低资源占用;PHP-FPM配置不合理→调整进程数和超时时间;Nginx配置错误→修正fastcgi_pass和超时配置;PHP程序致命错误→修复代码bug;MySQL/后端服务异常→修复依赖服务;网络问题→检查服务器间网络连通性;高峰期流量过大→扩容或使用CDN/缓存减轻后端压力。根据排查结果针对性处理,不要盲目重启服务,重启只能临时解决,需要找到根本原因。

真实经历:网站迁移后502,Nginx日志显示connect() failed (111: Connection refused),检查PHP-FPM配置发现listen是unix socket,但Nginx的fastcgi_pass配置的是127.0.0.1:9000,两者不匹配。统一为socket方式后问题解决。Nginx和PHP-FPM的监听方式必须一致,这是迁移后常见的配置问题。

排查提醒:遇到502错误先看Nginx错误日志,日志中会记录具体原因(连接拒绝、无效响应、超时等),根据日志针对性排查,不要盲目重启。检查PHP-FPM状态和服务器资源,这是502最常见的两个原因。修改配置后重启对应服务并测试。

网站CDN回源502 Bad Gateway_性能优化与预防_从检测到修复_运维经验

标签:

更新时间:2026-08-26 23:55:05

上一篇:微信多开bat脚本下载_Win10_微信3.9.8_适配性强

下一篇:discuz uc_server目录权限问题_文件权限与所有者修复