溫馨提示×

Ubuntu PHP日志中慢查詢怎么解決

小樊
51
2025-08-29 03:38:11
欄目: 編程語言

解決Ubuntu PHP日志中的慢查詢需從數據庫、PHP代碼、系統配置等多方面優化,具體步驟如下:

  1. 啟用并分析數據庫慢查詢日志

    • 在MySQL配置文件(/etc/mysql/my.cnf)中開啟慢查詢日志:
      [mysqld]
      slow_query_log = 1
      slow_query_log_file = /var/log/mysql/slow.log
      long_query_time = 2  # 設置慢查詢閾值(秒)
      
      重啟MySQL使配置生效:sudo systemctl restart mysql。
    • 使用工具分析日志:
      • mysqldumpslow -s t /var/log/mysql/slow.log:按執行時間排序查看慢查詢。
      • pt-query-digest /var/log/mysql/slow.log:生成詳細分析報告。
  2. 優化數據庫查詢

    • 添加索引:為查詢條件字段(如WHERE、JOIN子句)添加索引,避免全表掃描。
    • 優化SQL語句:重寫復雜查詢,減少子查詢、冗余字段,使用EXPLAIN分析執行計劃。
    • 定期維護:清理碎片、優化表結構,對大表考慮分區。
  3. 優化PHP代碼

    • 減少數據庫交互:使用預處理語句(PDO/MySQLi)批量查詢,避免循環中頻繁訪問數據庫。
    • 啟用緩存:對不常變化的數據使用OPcache、Memcached或Redis緩存查詢結果。
    • 代碼剖析:用Xdebug定位性能瓶頸,優化循環和遞歸邏輯。
  4. 調整PHP-FPM配置

    • 編輯配置文件(/etc/php/7.x/fpm/pool.d/www.conf):
      pm = dynamic
      pm.max_children = 50  # 根據服務器資源調整
      request_slowlog_timeout = 5s  # 記錄執行超時的請求
      slowlog = /var/log/php-fpm/www-slow.log
      
      重啟PHP-FPM:sudo systemctl restart php7.x-fpm。
  5. 系統級優化

    • 升級硬件:增加內存、使用SSD存儲提升I/O性能。
    • 監控工具:部署Prometheus+Grafana或New Relic,實時監控服務器負載和數據庫性能。

關鍵操作優先級:先通過慢查詢日志定位具體低效SQL,針對性優化數據庫索引和查詢;再調整PHP代碼和配置減少不必要的計算與請求。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女