Zend Opcache 配置優化

Share

  • Add this entry to Hatena Bookmark

Zend Opcache 是 PHP 一個加速模組,早期論壇盛行的時候,一定還記得要配置 eAccelerator 或 Xcache 來加速 PHP,讓論壇跑起來更順暢。現在很多人都在問 PHP 加速緩存哪個好,毫無疑問的 Zend Opcache 是首選,因為這是 PHP 官方出品的,在 PHP5.5 版開始,已經加在 PHP 的源代碼裡面了。

Zend Opcache 就不在多加介紹,google 一下就有一卡車的說明,這裡要說的是站長實際的 VPS 主機配置,及提高緩存的命中率調整。

PHP 5.5 以上的版本編譯後,Zend Opcache 就已經存在了,目前可支援 PHP7.0 版本的加速模組,就只有 Zend Opcache 及 APCu。在 PHPINFO 頁面可以看到 Zend Opcache 狀態,如下圖:

Zend Opcache 7.0.3

Zend Opcache 配置

Zend Opcache 配置預設值:

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=64
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=3000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.consistency_checks=0

512MB VPS 主機使用上面的配置,是沒甚麼問題,觀察 hits 命中率可以保持在 99%。但不是放著就不管,隨著網站的增加,觀察命中率的狀態而進行調整。

一般調整這下面兩個配置:

opcache.max_accelerated_files:
控制一次最多可以加載多少個 PHP 文件到內存。將這個值設置的比你的 PHP 文件多是非常重要的,預設值是 3000,可以使用使令查看,計算出你代碼倉庫裡有多少個文件。

指令:

find . -type f -print | grep php | wc -l

OPcache 哈希表中可存儲的腳本文件數量上限。真實的取值是在質數集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一個比設置值大的質數。設置值取值範圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之後是 1000000。

opcache.memory_consumption:
預設值是 64M,可依你的 VPS 的記憶體大小來調配,1G ram 設置為 192M,4G ram 設置為 384M。你可以使用 opcache 圖形查看工具監控目前消耗的記憶體,進而判斷是否需要增加這個值。

查看 OPcache 使用的情況,下述工具可以參考使用:

OPcache Status:

GitHub - rlerdorf/opcache-status: A one-page opcache status page

OpCacheGUI:

GitHub - PeeHaa/OpCacheGUI: GUI for PHP's OpCache

在實際 vps 8G 的例子 (網站數量 20 個):

opcache.max_accelerated_files=4000
opcache.memory_consumption=512

觀察 3 天後 opcache 命中率不到 70%,腳本文件數量上調到 100000 後,命中率只上升到 80% 左右。使用監看工具查看 opcache 後,使用記憶體調整為 1024M 後,命中率才達到理想的 99%。

最終 8G vps 的設置:

opcache.max_accelerated_files=100000
opcache.memory_consumption=1024

所以,一個有效的 Zend Opcache 加速 PHP 機制,才能真正達到整體的效能,不然一個低命中率的 Zend Opcache 只是浪費你的 VPS 的記憶體而已。

Follow me

yungke

在一家小小的公司當任電腦工程師,其實是一個打雜小弟,修電燈、水管也都是我的工作。
yungke
Follow me

Share

  • Add this entry to Hatena Bookmark

Follow Me

我發了這篇文章
如果您對 HelloROOT 的文章有興趣 !
邀請您按個讚 Like !!