web-dev-qa-db-ja.com

非常に遅い最初のハンドシェイクApache

この問題の修正をどこから始めればよいか考えている人は誰でも、最初のハンドシェイクには最大20秒かかることもありますが、その後の更新には0.9秒しかかかりません。

セットアップ、

100/10 Mbps
Windows OS
4GB RAM
Intel Core 2 @ 3.0 GHz
そして7200RPM HDD

Apache 2.4
SSLなし
Mod_Securityが有効
Mod_Deflateが有効
Mod_Expiresが有効
Mod_ReWriteが有効
同じマシン上のPHPとMySQL。

私ははるかに遅いマシンのパフォーマンスが良くなるのを見てきました。そのため、私の問題は最適化の問題だと思います。

1
Johan Larsson

Apache内でDNS解決をアクティブ化したようです。これにより、ApacheログにIPの代わりにホスト名を含めることができます。

そうでない場合、テストする最良の方法はネットワークトラフィックを分析することです。これは次の方法で実行できます。

  • wireSharkのようなネットワークスニファ
  • fiddler2のようなHTTPプロキシ/アナライザー
  • fireBugのようなブラウザプラグイン

次のコマンドを実行して調査を開始することもできます。

curl --trace-time -vI www.example.org

Www.exmaple.orgがあなたのサイトです。この出力を質問に追加してください。

1

Windows 6.1(Server 2008R2およびWindows7)以降、Windowsはローカルホストを解決するためのhostsファイルの使用を停止し、現在は低速の独自のDNSリゾルバーを使用しています。

これを修正する2つの方法:

a)Webアプリケーション(データベース接続)、httpd.conf、httpd-vhosts.conf、php.ini、およびその他の考えられる場所で、「localhost」のすべてのインスタンスを見つけて「127.0.0.1」に置き換えることができます。

または

b)ここにあるファイルhosts内:"C:\Windows\System32\Drivers\etc"

最後の2行のコメントを解除します。

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
1
Ryan Mortier

この特定の問題は、トラフィックの使用を制限するためにサーバーで使用しているmod_bwが原因で発生しました。これはすべてのファイルを制限し、HTMLファイルでさえ多少の遅延を引き起こしました。これを正しく構成すると、すべてが正常に機能します。

0
Johan Larsson