【PHP】 考えてみたらPHPのmemory_limitは負荷軽減に関係ないな

2. PHPのメモリ割り当てを変更した
いくらメモリに余裕あってもさすがにそんなに割り当てる必要はないだろJK…ということで減らした。

memory_limit = 32M ← 変更前:256M
 

先日、某サーバがいっぱいいっぱいになって突貫対応したんだけど、そのときついでにPHPのメモリ制限をきつめに変更した。んで、今日色々と調べてたら更新系のスクリプトがいくつか動いて無くて、結局メモリ食い過ぎるためだということが判明。


勘違いしていたのだけど、memory_limitはそれを越える場合は上限としてそれを割り当て、処理は遅くなるが負荷を掛けない…とかいうことではなくて、越える場合はエラーを出してKILLするってことなんだよね。考えてみれば当たり前。無限ループとかやらかして、小負荷で延々ループされても困るし。きつくしようが緩くしようが、正常な動作をしているプログラムには影響がないって言うかむしろそれ織り込み済みで動いてるプログラムがあった場合あんまりっていう話なんだよねぇ。



結局どうしたかというと、その更新系プログラム以外に重い処理が思い当たらなかったので、php.iniの設定はそのままにしておいて、それらのプログラムだけ例外的に多めにメモリを割り当てることに。

ini_set(‘memory_limit’, ‘128M’);

こんなんでメモリを割り当てられちゃって良いのかとも思うけど。



負荷軽減に関係ないんだったら別にphp.iniの設定を変える必要もないし、多めに設定しておけばいいけどそれはそれでなんか無意識にメモリ浪費しそうで。重いのだけ設定する方が良いような気もしつつ、そんなの移植性無くね?とかいう気もしつつ。

面倒くさいなぁ…どっちでもいいのかな。
(きちんと考えるなら、搭載メモリからマージン取ってMaxClientsで割るんだろうけどね)



本質的には、更新系みたいなバックグラウンドのプロセスを同じサーバで走らせるなって言う話なんだろうけどなぁ。その辺は予算のお話です。はい。