WordPressでまれにステータスコード500が出るときの対応 メモ
2017/01/10
ここ数か月このサイトにアクセスしてみるとちょこちょこステータスコード500でサイトが表示されないときがあった
結構な期間、悩んでいたのですがやっと原因が分かったので メモ
※お決まり:ここに書いたことをやって何か起きても自己責任でお願いします。
=================================================================
「Unable to allocate memory for pool.」のエラーが出てたらAPCのメモリの上限の少なさを怪しんでみる
対応としては
/etc/php.d/apc.ini
内の
apc.shm_size=64M
メモリの上限を増やすことで対応が可能でした。
=================================================================
なぜそんなに悩んでいたかというと
mod_securityのエラーログを見ていたらステータスコード500が出ていた時に
「PHP Fatal error: Allowed memory size of 67108864 bytes exhausted」
このログが出ていたからだったのです!
ということでPHPのメモリの上限を増やしたりしてみたんだけど
全然治らない、まさかWordpressのコードのどこかに書いてあるのか!?とか探してみたりもしたけど
どこにも書いてない(~~;
ちなみにこんなことしてみてました
1.PHPの設定ファイル(php.ini)は
memory_limit = 128M
になっておりもうすでに多めに指定してあったのでここの設定が無視、もしくはどこかで設定の上書きされていると思った
※PHPの設定を(phpinfo()で)確認したら一応128MになっていたのでwordpewssのPHPだけ無視されている?
2..htaccessに
php_value memory_limit 128M
と書いておいてみてもダメ
3.キャッシュ系のプラグインがいけないのかなと思い
試しにWordpresのプラグインを外したり消したりしても治らない(==あれ?壊しちゃったかなw
ということでwordpressを管理画面上から再インストールしても治らない
4.wordpressの設定ファイル(wp-config.php)に
define('WP_MEMORY_LIMIT', '128M');
define('WP_MAX_MEMORY_LIMIT', '128M');
書いてもダメ(ここら辺はやけになってやってます)
なじぇー(ノД`)・゜・。ということで(いったん全部元に戻して)
なかばあきらめて友人に相談してみたところ
「PHPのエラーをWEB画面上に出してみたら?」
ということで一瞬だけ一瞬だけだからねと悪魔のささやきも相まって
WordPressの設定ファイル(wp-config.php)の
define('WP_DEBUG', false);
を
define('WP_DEBUG', true);
にしてデバッグモードへ
ん?なんか初めて見たエラーが画面上に!
「Unable to allocate memory for pool.」(すみませんエラーをメモったの消しちゃいました)
調べてみたらAPCのメモリーが足りないそうな・・・
ということで
/etc/php.d/apc.ini
内の
apc.shm_size=64M
を
apc.shm_size=128M
に変えてすべてのキャッシュを全部削除して様子を見てみました
確かに以前にスワップしないようにメモリーをあまり使わないようにしておこう、とか思いながらいったん増やしたメモリーの上限を減らしてたんだった・・・
はぁ悩みが解決できて満足満足。(まぁ他にもいろいろとあるんですけどね(~~w
環境
centos:6.8
Wordpress:4.7
Apache:2.2.15
PHP:5.3.3
APC:3.1.13
参考サイト
経験知 PHPの「Unable to allocate memory for pool.」というエラーの対処法
※まとまってない・・・そのうち治そう・・・そのうち・・・