LNMP (linux, nginx, mysql/mariadb, php) 架構(gòu)的故障排查流程:
-
問題定位: 首先明確問題類型,例如502錯(cuò)誤、500錯(cuò)誤、性能瓶頸等。
-
日志分析: 檢查關(guān)鍵日志文件,找出錯(cuò)誤線索:
-
服務(wù)狀態(tài)檢查: 使用 systemctl status nginx 和 systemctl status php-fpm 檢查Nginx和PHP-FPM服務(wù)運(yùn)行狀態(tài)。 ps aux | grep nginx 和 ps aux | grep php-fpm 查看進(jìn)程狀態(tài)及數(shù)量。
-
資源監(jiān)控: 使用 top 或 htop 命令監(jiān)控CPU、內(nèi)存、磁盤I/O和網(wǎng)絡(luò)資源使用情況,查找資源瓶頸。
-
配置文件驗(yàn)證: 仔細(xì)檢查Nginx和PHP-FPM配置文件,確保路徑和設(shè)置正確無誤,例如fastcgi_pass 指向正確的PHP-FPM套接字或端口。
-
代碼調(diào)試: 如果是PHP代碼錯(cuò)誤導(dǎo)致的500錯(cuò)誤,查看PHP錯(cuò)誤日志。在開發(fā)環(huán)境中啟用錯(cuò)誤顯示:ini_set(‘display_errors’, ‘1’); error_reporting(E_ALL);。
-
數(shù)據(jù)庫診斷: 檢查MySQL慢查詢?nèi)罩?(SHOW VARIABLES LIKE ‘slow_query_log’; 和 SHOW VARIABLES LIKE ‘long_query_time’;),并使用 EXPLaiN 分析SQL查詢性能,優(yōu)化慢查詢。
-
網(wǎng)絡(luò)狀況排查: 使用 iftop 或 nethogs 檢查服務(wù)器帶寬是否飽和,以及是否存在網(wǎng)絡(luò)瓶頸。如果使用CDN,檢查CDN配置和緩存狀態(tài)。
-
系統(tǒng)資源限制檢查: 檢查 ulimit 設(shè)置,確保Nginx和PHP-FPM有足夠的資源限制,例如文件描述符和進(jìn)程數(shù)。
-
服務(wù)重啟: 修改配置文件后,使用 systemctl reload nginx 和 systemctl reload php-fpm 重啟服務(wù)應(yīng)用更改。
-
監(jiān)控工具: 使用監(jiān)控工具(如prometheus, grafana)實(shí)時(shí)監(jiān)控服務(wù)器和應(yīng)用性能,以便及時(shí)發(fā)現(xiàn)問題。
通過以上步驟,通常可以有效解決LNMP架構(gòu)下的常見故障。如果問題依然存在,建議尋求專業(yè)技術(shù)支持。