社内ツール開発中、追加機能の実装が出来たので意気揚々と本番にデプロイした結果。
Fatal error: Out of memory
ウワァァァァ
頭を抱えていたら、とりあえずの対処法と原因特定するための方法をパイセンに教えていただいたので記録。
;memory_limit = 256M ←翌朝、128から256に変更してみた
memory_limit = 512M ←256でも同エラーになったので、更に上げてみた
128Mから256Mに引き上げたものの、
数時間後に同エラーが発生したため解決にはならず。
おそらく意味はないと思われるが、512Mまで引き上げて様子見…
(そもそもメモリ上限を上げただけでは根本的な解決にはならない。)
memory_get_usage()
で現在のメモリ使用量
memory_get_peak_usage()
でメモリ使用量の最大値
をそれぞれ取得できる。
これを使って、実行前後のメモリ使用量をLogに吐き出すように仕込んでみた。
public function hoge() {
\Log::debug("first:".memory_get_usage() / (1024 * 1024)."MB\n");
// なにかの処理…
\Log::debug("now:".memory_get_usage() / (1024 * 1024)."MB\n");
\Log::debug("peak:".memory_get_peak_usage() / (1024 * 1024)."MB\n");
}
※laravelを使っているので\Log::debug()で書いています。
次エラーが発生した際に、メモリ使用量がとてつもないことになっている箇所があればおそらくそれが原因。
そうでもなければ、別の場所が原因なので、仕込む場所を変えてみる
…という風に原因特定していくらしい。
ひとまずは、この状態でログとにらめっこしつつ原因特定を頑張るぞ。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント