Laravel 5.2 を使用して作成された大規模なアプリケーションがあります。アプリケーションはしばらく「1 日か 2 日」正常に動作しているように見えますが、その後「各リクエスト テーブルが 15 秒以上」遅くなり始めます。
速度低下の原因を突き止めようとしています。手始めに、順番に確認する必要がある「以下」の上位 4 つのカテゴリをリストしました。
- SQL サーバーの問題。ロック、実行時間の長いクエリ。
- 長時間実行されるループのような余分な/不要な作業を引き起こす可能性のある PHP の問題
- メモリ リークや応答時間の遅延などの Web サーバーの問題。
- ネットワークの問題。
最初のカテゴリ「SQL の問題」については、すべてのクエリを評価しましたが、すべてが軽く、かなり速いようです。長時間実行されるクエリはなく、SQL ロックも見つかりません。これを可能性のある問題として排除しませんでしたが、今のところ、他の場所を探すのは公平です. アプリケーションが大量のクエリを生成していることに注意してください。これは、N+1 のケースに遭遇している可能性があることを示唆しています。
カテゴリ 3 と 4 は重要ですが、2 番目のカテゴリである「コードの問題」に焦点を当てたいと思います。コードに問題があるかどうかを判断するために、いくつかのことを理解できる必要があります。ここに私が知りたい/ログを開始したいことがいくつかあります。
- 各クラスの実行にかかる時間。実行に時間がかかるかどうかを確認します。
- N+1 ケースのソースを特定できる各クラスから生成されたすべてのクエリの数/リスト。
Google Chrome で Clockwork 拡張機能を使用しているため、ログの作成に役立ちます。しかし、クラスレベルで結果を分析することはできません。これにより、何が起こっているのかを深く理解できます。
上記の2つのアイテムをどのように集めることができますか? Clockwork にフックして、その情報をフィルターとして追加し、その情報をすべて Google 拡張機能に表示することはできますか?