当社では、非常に大規模な Web サイト用に Apache 2.2 サーバーを運用しています。過去数か月間、一部のユーザーから応答時間が遅いという報告がありましたが、他のユーザー (社内ネットワークとホーム ネットワークの両方のリソースを含む) ではパフォーマンスの低下は見られません。
大量の調査を行った結果、最終的に、リバース DNS ルックアップ (タイムアウト) を引き起こしていた構成内の「Deny from none」ステートメントが見つかり、問題の大部分は解決されましたが、画像、CSS、JavaScript、その他の静的コンテンツに対するリクエスト処理時間が 300 秒を超えるという情報が Apache ログ (ログ形式で %D を使用) に記録されているお客様がまだいます。
すべての Deny / Allow ステートメントで「none」が再度出現していないか確認し、逆 DNS ルックアップの原因となることがわかっているその他のすべてのこと (書き換えルールで「REMOTE_HOST」を使用する、ログ形式の設定で %h ではなく %a を使用するなど) も確認しました。また、HostnameLookups が「Off」に設定されていることも確認しました。
余談ですが、この問題を抱えている人の逆 DNS ルックアップがタイムアウトしないことも確認しました。したがって、この場合、DNS は問題ではないと確信しています。
アイデアが尽きました。静的コンテンツのリクエスト時間が特定のユーザーに対してのみ長くなる原因となる、私が見逃している可能性のある Apache 構成シナリオを教えていただけますか?
よろしくお願いします。
答え1
このようなものを見つけたら、まず次のことを確認します。
- DNS。設定ファイルを見るだけでなく、ネットワークダンプ
tcpdump
やを使用しwireshark
て確認してください。これが問題ではないことが確実な場合は、 - これらのユーザーにとって、traceroute や ping はどのように見えるでしょうか? それぞれの側に共通点があるのでしょうか? NAT ボックスの不具合が、終わりのない苦痛を引き起こしたのを見たことがあります。また、ユーザーのローカル トラフィックが原因で、負荷のかかる接続がない他のユーザーよりも私のサイトが遅く見えるのを見たことがありますが、彼らは私のサイトが遅いことに気づいています。
- ファイアウォール/トンネリング。すべての ICMP をブロックするなど、何かおかしなことをしていませんか? トンネル上にいますか? どちらも「はい」の場合、PMTU 検出が何らかの奇妙な方法でタイムアウトしている可能性があります。
応答時間が 300 秒の場合、Apache が応答を諦めた可能性が高く、応答があったという意味ではないことに注意してください。5 分はサーバーが待機するには非常に長い時間ですが、クライアントがこれほど長く待機するのはさらに異常です。