linux服务器卡顿可通过top、netstat、df三条命令快速定位,top排查cpu与内存占用,netstat分析网络连接异常,df检查磁盘空间是否耗尽。

先确认卡顿是全局现象还是局部问题。
快速判断影响范围
打开终端,用同一台服务器执行几个基础命令,观察响应是否迟滞:
- top 或 htop:看 CPU、内存、负载是否有异常飙升(比如 CPU 持续 95%+、load average 超过 CPU 核数 × 2)
- df -h:检查磁盘空间是否耗尽(特别是 /var/log、/tmp 和 Laravel 的 storage/logs)
- free -h:确认内存是否被占满,swap 是否频繁使用(si/so 值持续非零)
- systemctl status php8.1-fpm nginx mysql(按实际版本调整):看关键服务是否仍在运行,有无 failed 状态
查日志找第一线索
不翻代码,先看三类日志:
-
Laravel 日志:
tail -n 30 storage/logs/laravel.log,重点搜CRITICAL、ERROR、SQLSTATE、Connection refused -
PHP-FPM 错误日志:通常在
/var/log/php8.1-fpm.log,查段错误、子进程崩溃、OOM killer 杀进程记录 -
Nginx 错误日志:
/var/log/nginx/error.log,关注upstream timed out、connect() failed、no live upstreams
临时止血操作
如果服务已不可用或响应极慢,可立即执行:
- 重启 PHP-FPM:
sudo systemctl restart php8.1-fpm(避免直接重启 Nginx,防止连接中断) - 清空队列积压(如有):
php artisan queue:restart,再手动 kill 掉卡死的 worker 进程(ps aux | grep queue:work) - 临时关闭调试模式:
APP_DEBUG=false写入 .env 并运行php artisan config:cache,减少日志和调试开销
排除突发流量或攻击
用简单命令验证是否被刷:
-
netstat -an | grep :80 | wc -l查当前 HTTP 连接数(正常业务一般 500 需警惕) -
tail -100 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10查高频访问 IP - 检查是否有大量 404、500 请求,或异常 UA(如 sqlmap、nuclei)











