php-eAcceleratorの設定を調整

php-eAcceleratorを導入の続きです。
php-eAcceleratorの前回の設定では記事のプレビュー画面が表示されなかったり、管理メニューバーが表示されない不具合が出たので安定稼動すべく調整してみました。

症状

はっきりと分かる不具合は、プレビューボタンを押しても画面が真っ白だったり、管理メニューバーの部分が真っ白で読み込みが終わらないという症状。eAcceleratorの障害

管理画面が真っ白になる不具合は解決したはずですが、念のためhttpdのログを見てみると今回もSegmentation fault (11)が出てました。

$ cat /var/log/httpd/error_log
[Sun Feb 15 18:21:02 2015] [notice] child pid 2406 exit signal Segmentation fault (11)

ファイルを絞り込む

eAccelerator control panelのScript Cacheを使って、今回の症状が起きる際にキャッシュされるファイルを調べてみると以下の4つのどれかが悪さをしているようです。

  • /var/www/html/wp-admin/includes/file.php
  • /var/www/html/wp-admin/includes/plugin.php
  • /var/www/html/wp-includes/admin-bar.php
  • /var/www/html/wp-includes/class-wp-admin-bar.php

ここからさらに絞り込むのは面倒なので、eaccelerator.iniでadminの文字列が含まれるファイルをフィルタリングで除外することにします。

eaccelerator.iniのフィルタリングを複数設定する方法

ネットを探しても複数のフィルタを設定する方法が見つかりませんでしたが、
いろいろ試してみたところフィルタしたいキーワードに対して都度eaccelerator.filterを書けばいいようです。

$ vi /etc/php.d/eaccelerator.ini
  eaccelerator.filter = "!*/jetpack*"
+ eaccelerator.filter = "!*admin*"

あとはhttpdを再起動して今回の不具合は解消されました。