exhaustedというエラーが起こる現象2019年10月4日システムの定時処理が実行されてなくて気付いたのですが、先日サーバのPHP周りの設定をいじってから、cronからPHPが実行されなくなってしまったようです。一方で、WebアクセスからはPHPの動作は全く問題ありません。原因究明に取り掛かる事にしました。exhausted」というエラーが出ます。php-fpm.d/www.confでもphp.iniでもメモリ割り当て量は256MBに設定してあり、こんなメッセージが出るはずもありません。妙に少ないメモリ割り当て量なので、php-fpmに関連する子プロセスの設定とmemory_limitの設定が変に干渉してるのかな?と思って色々いじってみたのですが、どうしても現象が解決しません。freeコマンドでメモリを見ても残メモリは潤沢にあります。freeでは問題なかったけれども、変なメモリリークでも起きておかしな事になってるのかなと思って再起動かけたりしたものの、現象は解決しませんでした。php-fpm.dのmemory_limitがphp.iniの設定を上書きしているのは知っていたので、それをコメントアウトすると、今度はwww-error.logが大量のexhaustedエラーで埋まってしまいました。PHPファイルにphp_ini関数でメモリを割り当てても改善しません。何か見落としてる所は無いか...と思い、この262144という数字に注目してみました。262144を1024で割ってみると、256。256バイトを割り当てようとしたのだと知り、ピンと来ました。php.iniのmemory_limitの記述は256MBにしていたのですが、この「B」が付いてるとフォーマットエラーになってしまうようです。これが256バイトという指定になってしまったのでしょう。これを256Mに訂正した所、CRONでもコマンドラインでもPHPが実行できるようになりました。それにしても疲れていたのでしょうか、php-fpmの設定がphp.iniを上書きするという意識で凝り固まっていたせいで解決まで長引いてしまいました。nginxがウェブリクエストを捌いてphp-fpmに振ってるのと違って、コマンドラインからphpを実行してるだけなのだからphp-fpmの設定は効くわけないですね。考えてみれば当たり前でした。~ツキガミ~押し出し。