Zend Opcache 加速 php 配置優化

Zend Opcache

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_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:https://github.com/rlerdorf/opcache-status
OpCacheGUI:https://github.com/PeeHaa/OpCacheGUI

在實際 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 的記憶體而已。



Zend Opcache 加速 php 配置優化
  • 效能
  • 速度

Summary

Zend OPcache 通過 opcode 緩存和優化提供更快的 PHP 執行過程。它將預編譯的腳本文件存儲在共用記憶體中供以後使用,從而避免了從磁碟讀取代碼併進行編譯的時間消耗。
同時,它還應用了一些代碼優化模式,使得代碼執行更快。

5.0
User Rating 5 (3 votes)
Sending

,

One Response

  1. Zeng pppdog November 27, 2016

Leave a Reply

Sending

Powered by WordPress. Designed by WooThemes