web-dev-qa-db-ja.com

Squidプロキシからの応答が遅い-最適化

Centos5.3ではsquid 3.を使用しており、現在20人のユーザー(Internet Explorer)がこのプロキシを使用しています。問題は、プロキシ経由のアクセスが遅いことです。 google.com(.au)のような単純なWebページでも、プロキシを使用しない直接接続よりも5秒長くかかります。約2〜5秒の遅延があるようです。 google.com(.au)のキャッシュを無効にしても効果はありませんでした。 dns_nameserversを明示的に定義しても違いはありません。

サーバーパラメーター:デュアルコアAMD Opteron(tm)プロセッサー2220、6GBメモリ、60gb SCSI hdd

cache_mem 256 MB
cache_dir ufs/usr/local/squid/var/cache 30000 16 256
maximum_object_size_in_memory 256 KB
minimum_object_size 0 KB(0-200 KB-実際の違いではなく、遅延はまだあります)
maximum_object_size 32 MB

サーバーの仕様に基づいて、squid.confでこれらの仕様をどのように変更しますか。遅延の原因は何ですか?また、yahoo.com.auのような大きなウェブページの場合、ページの一部をキャッシュから受け取り、残りを受け取る方法があります(画像は最後になります)。現時点では15秒間何も表示されず、その後Webページ全体が表示されます。

4
Jindrich

私の最初の勘は、tcpdumpを使用してトラフィックをスニッフィングし、それをwiresharkにロードして、遅延が発生している場所を確認することです。

tcpdump -i any -s 0 -w /tmp/squid.pcap

(ssh経由で実行している場合は、末尾に「not port ssh」を追加してください。)

これをwiresharkにロードすると、遅延がどこにあるかを確認できるはずです。交通量が多すぎて視界が遮られないように、静かな時間にこれを行うことをお勧めします。その時点でプロキシにアクセスするのがあなただけである場合は、さらに良いでしょう。

考えられる遅延は次のとおりです。

  • ブラウザー接続プロキシ
  • Webサーバーに接続するプロキシ
  • プロキシDNSリクエスト
  • ブラウザに応答を返すプロキシ
7
David Pashley

一部のWebページでは、ページ全体、画像などがダウンロードされる前にページを描画することができません。このようなページを高速化するには、いくつかの方法があります。

  • Webキャッシュを使用(すでに行っているように):これにより、画像がより速く取り込まれます。
  • より高速なマシンを使用する:ほとんどの場合、「構成」、つまり、情報を取得するためではなく、表示するためにWebページをレイアウトすることになります。
  • より高速なブラウザを使用:これは上記と同じです。 IE5を使用している場合は、IE6またはIE7を試してください。 Firefox 2を使用している場合は、Firefox3またはSafariを試してください。

昔、私はMacintosh用のInternet Explorer(当時は68k)でブラウジングしていました。 IEがページの表示方法を計算しているので待つように指示する「新聞」アイコンを見たのをよく覚えています(データを取得していません:計算しています...)

注意すべきもう1つのこと:一部のページは、キャッシュされないように明示的に要求します。これらの要求が許可されるか拒否されるかは、キャッシュ管理者次第です。通常、これらのページは頻繁に変更されるページ、またはWeb管理者が他の場所に保存したくないページです。したがって、このようなページでは、キャッシュにページがまったくない場合でも、Webキャッシュがユーザーに代わってページを処理する必要があるため、追加のオーバーヘッドが発生します。

トラフィックをスニッフィングすることが、物事が遅れている理由を判断する良い方法であることに同意します。ネットワークストリームのどの部分が実際に遅延を引き起こしていますか?

Wireshark(およびtcpdump)には、トラフィックをクリーンアップするために使用できるフィルターのセットが多数あります。大量のTCPが発生しないようにするために、静かな時間まで待たなければならない唯一の理由です。ダンプファイル。ただし、プロキシへの直接ネットワークトラフィックに制限されているだけで、妥当なデータセットを取得できます。

tcpdump -s 0 -n -w tcpdump.dat port 3128

(ポート3128は標準のsquidポートです。適切なものを使用してください。)

Wiresharkを使用すると、単一のTCPトラフィックストリームに基づいて即座にフィルタリングできるため、そこで異なるストリームの混合を心配する必要もありません。

また、/ var/log/squidのログを見て、リクエストに何が起こっているかを調べます。リクエストはキャッシュからのものですか?リモートサイトから来ていますか?繰り返しリクエストしてみてください-一度実行した後、ページが早く表示されますか?

3
Mei

まったく同じ問題が発生したときに、DNSの問題であることがわかりました。

Squid.confのDNSサーバーをISPに変更すると、ラグはなくなりました。

1
Steve Spurrell