PHP Opcache 的正確使用

xing393939發表於2020-10-12

關鍵配置

  1. PHP opcache 配置、狀態與清除
  2. opcache.memory_consumption=512 //記憶體塊大小,單位是M,cli和fpm各自有一個記憶體塊
  3. opcache.max_accelerated_files=100000 //記憶體中最多可以快取多少個PHP檔案
  4. opcache.max_wasted_percentage=5 //預設是5,浪費記憶體的百分佔比,不能超過此值
  5. opcache.validate_timestamps=0 // =1會根據revalidate_freq設定的值檢查更新程式碼,=0永不檢查
  6. opcache.revalidate_freq=2 //檢測php程式碼是否更改的間隔(秒)

注意事項

  1. PHP Opcache 注意事項以及調優
  2. 當 opcache 在某些情況下記憶體滿時,它將擦除所有快取條目並從空快取開始,產生快取擊穿:許多請求同時生成相同的快取條目。
  3. opcache 檢測記憶體是否已滿的三個指標:
    • opcache.memory_consumption 預設為 64(MB)
    • opcache.max_accelerated_files 預設為 2000 個可快取檔案,最大值為 100000
    • opcache.max_wasted_percentage 預設是5,浪費記憶體的百分佔比,不能超過此值
  4. 為了找到正確的配置,可以列印 opcache_get_status(false)
    • oom_restarts 記憶體滿了產生重啟的次數
    • last_restart_time 最後重啟的時間
    • current_wasted_percentage 當前浪費記憶體的百分佔比

線上opcache.validate_timestamps=0更新程式碼後如何更新opcache

  1. 平滑重啟 php-fpm
  2. 透過 opcache_reset () 函式
  3. 第三方庫:gordalina.github.io/cachetool/
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章