LNMP (linux, nginx, mysql/mariadb, php) 架构的故障排查流程:
-
问题定位: 首先明确问题类型,例如502错误、500错误、性能瓶颈等。
-
日志分析: 检查关键日志文件,找出错误线索:
-
服务状态检查: 使用 systemctl status nginx 和 systemctl status php-fpm 检查Nginx和PHP-FPM服务运行状态。 ps aux | grep nginx 和 ps aux | grep php-fpm 查看进程状态及数量。
-
资源监控: 使用 top 或 htop 命令监控CPU、内存、磁盘I/O和网络资源使用情况,查找资源瓶颈。
-
配置文件验证: 仔细检查Nginx和PHP-FPM配置文件,确保路径和设置正确无误,例如fastcgi_pass 指向正确的PHP-FPM套接字或端口。
-
代码调试: 如果是PHP代码错误导致的500错误,查看PHP错误日志。在开发环境中启用错误显示:ini_set(‘display_errors’, ‘1’); error_reporting(E_ALL);。
-
数据库诊断: 检查MySQL慢查询日志 (SHOW VARIABLES LIKE ‘slow_query_log’; 和 SHOW VARIABLES LIKE ‘long_query_time’;),并使用 EXPLaiN 分析SQL查询性能,优化慢查询。
-
网络状况排查: 使用 iftop 或 nethogs 检查服务器带宽是否饱和,以及是否存在网络瓶颈。如果使用CDN,检查CDN配置和缓存状态。
-
系统资源限制检查: 检查 ulimit 设置,确保Nginx和PHP-FPM有足够的资源限制,例如文件描述符和进程数。
-
服务重启: 修改配置文件后,使用 systemctl reload nginx 和 systemctl reload php-fpm 重启服务应用更改。
-
监控工具: 使用监控工具(如prometheus, grafana)实时监控服务器和应用性能,以便及时发现问题。
通过以上步骤,通常可以有效解决LNMP架构下的常见故障。如果问题依然存在,建议寻求专业技术支持。