"aaa"とだけ書いたtest.htmlを表示するのに、5~10秒くらいかかります。
以下が現状内容です。
・Webサーバは、WindowsServer2008sp1、XAMPPを使用、それ以外は特にインストールなし。
・IPアドレスでURLを入力してみても、やはり遅い。
・Webサーバ上からhttp://localhost/test.htmlとして表示させると、すぐ表示できる。
・一般に公開はしているが、アクセスはほとんどない。
・同じ社内DMZにある、別のWebサーバは早い。(WindowsServer2003R2、IIS)
・tracertは、1ホップのみ
以上から、自分はネットワーク周りの設定が原因じゃないかと思っているのですが、
先日ネットワークの担当者が急遽退社し、業務を引き継いだばかりで、
自分はまだネットワーク系の知識が浅く、何から調べたらいいのか分かりません。
どんなキーワードを元に調べていけばいいでしょうか?
私なら最初にまず名前解決まわりを疑います。
たとえば、Web サーバがアクセスログを記録する際に接続元 IP アドレスを逆引きしてホスト名を記録するように設定されているため、アクセスを受けた時に都度アクセス元 IP を逆引きしようとして DNS や WINS を探し回るが何らかの理由 (たとえば参照する DNS や WINS の IP アドレスを誤っている、FW で名前解決関係のプロトコルを遮断されている、等) によりいちいちタイムアウト待ちが発生する、とか、
ホスト名によるアクセス制限等の設定をかけてあり、(同上) とか。
試しに Web サーバの hosts (\Windows\system32\drivers\etc\hosts) に接続元の端末の IP アドレスとホスト名の対応を静的に記述してみて解決するようなら上記仮説が正しいということになると思います。
あとは根本解決として、
・ホスト名の逆引きをするような必要性があるかどうか検討し、不要ならやめる
・ホスト名を速やかに逆引きできるように DNS や WINS の環境を整える
ということになるかと。
まず、ボトルネックがどこにあるのか調べます。
レスポンスが遅いサーバのIPアドレスをA、同じDMZにあり普通の速度でレスポンスを返すサーバのIPアドレスをBとします。
クライアントにWindowsをご利用でしたら、DOS窓から以下のコマンドを打って、両者のレスポンスタイムを比べます。
ping A
ping B
これで本当にAが遅いことが分かったら、次に、どこにボトルネックがあるか調べます。
以下のDOSコマンドを打ってください。
tracert A
tracert B
tracertを実行すると以下のように表示されます。
これらはサーバにたどり着くまでの各ルートの処理時間です。
AとBでルートが違うか、処理時間が違っていると思います。
ご確認ください。
ありがとうございます。
ping A
ping B
両方共、速度は早く反応が返ってきます、どちらも変わりません。
tracert A
tracert B
こちらも、どちらもすぐ反応が返ってきます、どちらもホップ数は1だけです
以下のような表示になってます
1 18ms <1 ms <1 ms 999.999.999.999.static.zoot.jp [999.999.999.999]
(999.999.999.999はグローバルIPアドレスです)
私なら最初にまず名前解決まわりを疑います。
たとえば、Web サーバがアクセスログを記録する際に接続元 IP アドレスを逆引きしてホスト名を記録するように設定されているため、アクセスを受けた時に都度アクセス元 IP を逆引きしようとして DNS や WINS を探し回るが何らかの理由 (たとえば参照する DNS や WINS の IP アドレスを誤っている、FW で名前解決関係のプロトコルを遮断されている、等) によりいちいちタイムアウト待ちが発生する、とか、
ホスト名によるアクセス制限等の設定をかけてあり、(同上) とか。
試しに Web サーバの hosts (\Windows\system32\drivers\etc\hosts) に接続元の端末の IP アドレスとホスト名の対応を静的に記述してみて解決するようなら上記仮説が正しいということになると思います。
あとは根本解決として、
・ホスト名の逆引きをするような必要性があるかどうか検討し、不要ならやめる
・ホスト名を速やかに逆引きできるように DNS や WINS の環境を整える
ということになるかと。
Webサーバのhostsファイルに、自分のPCのIPアドレスとコンピュータ名を追加したところ、早く反応するようになりました!
ネットワーク設定のDNSサーバーは、どちらのWebサーバも同じIPアドレスに設定されています、という事はDNSサーバの
設定(逆引き?)を調べてみればいいという事でしょうか?
解決の糸口が見えてきました。ありがとうございます!
> ネットワーク設定のDNSサーバーは、どちらのWebサーバも同じIPアドレスに設定されています、
> という事はDNSサーバの設定(逆引き?)を調べてみればいいという事でしょうか?
Web サーバが逆引きしようとするような設定があるかどうか、という点を確認すると良いと思います。
たとえば、2台ともネームサーバに問い合わせできない状態になっているけど、問題ない方のサーバはそもそも問い合わせようとしていなくて問題が表出化していないだけなのかもしれません。
その辺が一緒なのにうまくいかないとしたら、DNS サーバがなぜか片方からの名前解決要求だけを拒否るような設定になっているか、Web サーバ自身のクライアントファイアウォールが自分の名前解決要求送信をブロックしてしまっているとか…
名前解決要求がどうやりとりされているか、Web サーバ自身と DNS サーバ自身とでそれぞれ Wireshark や tcpdump 等使ってパケットキャプチャしてみるとヒントが得られそうです。
解決できました。
その後インターネットで調べたところ、遅い方のWebサーバにあった.htaccessに「allow from all」という記述があり、apacheではこの記述がどこかにあると、何故かアクセスログを名前逆引きして記録しようとするらしい事が分かりました。これ以上詳しい事はまだ自分も理解できていないのですが、とりあえず.htaccessを削除したら早く反応するようになりました。
pmakinoさんの助言で解決の糸口を見つける事ができました。ありがとうございました!
Webサーバのhostsファイルに、自分のPCのIPアドレスとコンピュータ名を追加したところ、早く反応するようになりました!
ネットワーク設定のDNSサーバーは、どちらのWebサーバも同じIPアドレスに設定されています、という事はDNSサーバの
設定(逆引き?)を調べてみればいいという事でしょうか?
解決の糸口が見えてきました。ありがとうございます!