zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

php-opcacheの効果が絶大だったメモ

【概要】

Wordpress(nginx+php-fpm)で、アクセス集中時にCPU負荷がボトルネックとなっていたためphp-OPcacheを導入したところ劇的に改善したのでメモ

OPCacheについては以下を参照
OPcacheを利用してPHPを高速にしよう | WEB ARCH LABO
OPcache導入してみた!(速さ検証もあるよ!) - Qiita
PHPのキャッシュ機構のおさらいと、opcacheの設定とかキャッシュクリアとか - waste of time

上記からのぼんやりした認識

  • コンパイルされたバイナリコードをメモリに置いておくので、同じようなリクエストが大量に来る場合に効果があると思われる。
  • 実行結果をキャッシュするわけではないので処理には影響でない。

【環境】

OS:Amazon Linux
EC2インスタンスタイプ:m4.xlarge(4Core/16GiB)
Webサーバ:nginx/1.8.1
PHP:PHP 5.6.38

【やったこと】

■パッケージのインストールと初期設定

# インストール

yum install php-opchache

# パラメータ値を変更
php.netの示す推奨値を利用した)
※推奨設定値:http://php.net/manual/ja/opcache.installation.php
 オプションの詳細:http://php.net/manual/ja/opcache.configuration.php

cat /etc/php.d/10-opcache.ini | egrep -v '^(#|$|;)'

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.blacklist_filename=/etc/php-5.6.d/opcache*.blacklist


# サービス再起動して反映

service php-fpm restart
service nginx restart

# 組み込み状態確認

php -v
PHP 5.6.38 (cli) (built: Oct 16 2018 23:34:40)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

php -i | grep opcache
(省略)
負荷確認

f:id:zuntan02:20190109122212p:plain
目に見えてレスポンスが軽くなった。
php-fpmのプロセス数も減少している。
空きメモリの減少も見られない(opcache.memory_consumptionの値が上限と思われる)

もっと早くやっとけばよかった。。。