spree エクステンション内から実行する非常に大きなアプリケーションがあります。問題は、すべてのリクエストがローカルでも非常に遅いことです。実行を開始する前に、発行されたリクエストごとに 3 ~ 4 秒間、ブラウザのステータス バーに「ローカルホストを待機中」または「サーバーを待機中」などのメッセージが表示されます。ログ ファイルに記録された実行時間は非常に良好です。しかし、初期遅延のため、全体的な応答時間が遅い. この状況を改善するには、どこから始めればよいか教えてください.
2 に答える
この種の問題の考えられる根本原因の 1 つは、最初の DNS 名前解決が最終的に解決される前に失敗することです。これが該当するかどうかは、tcpdump
(プラットフォームで利用可能な場合) またはを使用して確認できます。ポート 53 でクライアント ホストとの間のトラフィックを探し、名前の応答がタイムリーに発生しているかどうかを確認します。
これが問題であることが判明した場合は、最初に試行するリゾルバーがサーバーアドレスを認識できるようにクライアントが構成されていることを確認する必要があります (これらは失敗しているローカル LAN アドレスであると推測しています)。プラットフォームが異なれば、これを構成する方法も異なります。簡単なハックは、サーバーのアドレスをクライアントのホストファイルに入れて、それが修正されるかどうかを確認することです.
リクエストを送信すると、Ruby の作業が完了するまで「ホストを待機中」と表示され、レスポンスの送信が開始されます。そのため、速度を低下させている処理作業がほとんどある場合は、このエラーが表示されます。あなたがしたいことは、動作を確認している関数を調べ始め、それらを細かく分割して、どの部分が遅いかを確認することです。すべてが遅い場合は、すべての関数に共通するもの (関数の前、またはアプリケーション コントローラー コードなど) を調べる必要があります。私がやっていることは、修正する必要があることを確認するために遊んでいるときに、さまざまな段階でコードに「puts」ステートメントを配置して、現在の時間を出力することです。その後、どの段階に時間がかかっているかを確認できます。ほら?