2021-02-10に投稿

LaravelでMaximum execution time of 30 seconds exceededが頻発する場合

Laravelで下記のようなエラーが何分かごとに発生していた。

[2021-02-09 17:09:02] production.ERROR: Maximum execution time of 30 seconds exceeded {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code:
1): Maximum execution time of 30 seconds exceeded at /home/app/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php:73)
[stacktrace]
#0 {main}
"}

ちなみに環境はPHP7.4、Laravel5.7とフレームワークはちょっと古め。最新ではもしかしたら全く同じ環境でも出ないのかもしれないし出るかもしれない。

根本的な原因としては処理が重くて30秒で終わらず強制停止になってしまっていること。そのため停止位置は下記のようにばらつきがある。

  • vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
  • vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
  • vendor/symfony/finder/Iterator/RecursiveDirectoryIterator
  • vendor/symfony/finder/Iterator/DateRangeFilterIterator

stacktraceも空のため、何をやっている途中で発生しているのかはわからない。

解決方法

原因はわからないが、色々調べてみた情報から考えてみると、ファイルを扱いまくって重いところといったらセッション……? という疑惑が出てきたためセッションをファイルからデータベースに変更した。するとエラーが出なくなった。

原因

恐らくアクセスが増えてセッション用のファイルが増えすぎると発生する……? 詳しいことはもう誰にもわからない。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, React, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント