LNMP(Linux+Nginx+MySQL+PHP)是常见的Web服务架构组合,以下是针对LNMP环境的系统化故障排查方法。
# 检查Nginx状态
systemctl status nginx
nginx -t # 测试配置文件语法
# 检查MySQL状态
systemctl status mysql
# 检查PHP-FPM状态
systemctl status php-fpm
netstat -tulnp | grep -E '80|3306|9000'
ss -tulnp | grep -E '80|3306|9000'
ps aux | grep -E 'nginx|mysql|php-fpm'
tail -f /var/log/nginx/error.log
nginx -t
ls -la /var/www/html/
# 查看PHP-FPM监听地址是否与Nginx配置匹配
grep -E 'listen|listen.owner|listen.group' /etc/php-fpm.d/www.conf
tail -f /var/log/mysql/error.log
mysqladmin -u root -p ping
mysql -u root -p -e "SHOW STATUS LIKE 'Threads_connected';"
# 查看慢查询是否开启
mysql -u root -p -e "SHOW VARIABLES LIKE 'slow_query_log';"
# 查看慢查询日志路径
mysql -u root -p -e "SHOW VARIABLES LIKE 'slow_query_log_file';"
tail -f /var/log/php-fpm/error.log
php -i | grep error_log
# 创建测试文件
echo "<?php phpinfo(); ?>" > /var/www/html/test.php
# 访问http://your-server/test.php
# 检查进程数设置
grep -E 'pm.max_children|pm.start_servers' /etc/php-fpm.d/www.conf
top
htop
vmstat 1
iostat -x 1
# 检查TCP连接状态
ss -s
netstat -antp
# 查看当前运行查询
mysql -u root -p -e "SHOW PROCESSLIST;"
# 使用mysqltuner分析
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl
tail -f /var/log/nginx/access.log /var/log/nginx/error.log /var/log/php-fpm/error.log
grep -E 'error|fail|warning' /var/log/nginx/error.log
# 统计HTTP状态码
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# 统计访问量最高的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
通过以上系统化的排查方法,可以快速定位和解决LNMP环境中的大多数问题。