當 Laravel 在 CentOS 上運行緩慢時,可以通過以下方法進行優化:
OpCache 是 PHP 的一個擴展,用于加速 PHP 腳本的執行。它通過將 PHP 腳本的編譯結果(即 opcode)緩存起來,從而避免每次請求都重新編譯腳本,提高性能。在 php.ini
內開啟 OpCache,相關參數如下:
[opcache]
opcache.enable=1 ; 啟用 opcache
opcache.enable_cli=1 ; 在命令行模式下也啟用 opcache
opcache.jit=tracing ; 啟用 jit 跟蹤模式,根據執行情況動態編譯熱點代碼
opcache.jit_buffer_size=256m ; 為 jit 編譯保留的內存大小
opcache.memory_consumption=512m ; opcache 可使用的內存大小
opcache.interned_strings_buffer=64m ; 用于存儲內部字符串的緩沖區大小
opcache.max_accelerated_files=10000 ; 緩存的最大文件數量
opcache.revalidate_freq=60 ; opcache 每隔 60 秒會檢查一次腳本文件是否有修改。默認值通常為 2 秒,0 則認為是每次啟動都檢查文件是否修改,會增加 io 操作,影響性能,這個參數只有在 opcache.validate_timestamps=1 的情況下才有效
opcache.validate_timestamps=1 ; 啟用文件變更檢查
opcache.fast_shutdown=1 ; 快速關閉,提高性能
opcache.save_comments=1 ; 保存注釋,某些框架或應用可能依賴注釋
通過 htop
觀察發現,內存使用率很少,說明內存并不是 Laravel 的瓶頸,考慮增加 PHP-FPM 的工作池:
emergency_restart_threshold = 30 ; 在 60s 內超過 30 個 php-fpm 進程因出現異常(如段錯誤)而退出,那么 php-fpm 主進程會自動重啟
emergency_restart_interval = 60s ; 配合第一個選項使用
process_control_timeout = 5s ; 停止 php-fpm 的時候,如果子進程超過 5s
運行以下命令來優化 Composer 的自動加載:
composer dump-autoload --optimize
lscpu
命令查看 CPU 詳情,如有需要,考慮升級 CPU。free -h
命令查看內存使用情況,如有需要,考慮升級內存。iostat
命令檢查硬盤 I/O 性能,如有需要,考慮升級硬盤或使用 SSD。systemctl
命令管理服務。通過上述方法,可以顯著提高 Laravel 在 CentOS 上的運行速度。如果問題仍然存在,建議進一步檢查應用代碼和數據庫查詢,以找到并解決性能瓶頸。