[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:48700] Re: Debian Sarge 上の Squid を経由したインターネット接続が遅い



たびたび申し訳ありません,荒木田です.

[debian-users:48681] で utf-8 で送信してしまったメッセージを
[debian-users:48691] で訂正してお送りしたつもりでしたが,
リモートで作業したためか,編集がおかしなままで送信してしまいました.

長くなり大変申し訳ございませんが,若干の追記もふくめて
再再度投稿させてください.よろしくお願い致します.

################ ここから ################

現在,Dell PowerEdge 830 に武藤さんの installer を用いて Sarge を
インストールしたサーバ (new-server とします) で Proxy として squid を
動かしているのですが,クライアント PC から squid を経由して,ある
種のサイトへの接続に非常に時間がかかり,場合によっては接続が 
Time Out してしまう状況に悩んでおります.

new-server のインストール時に使用したイメージは,

   sarge-custom-1115.iso

で,現在,

   % uname -a
   Linux new-server 2.6.19-rc3-1-486 #1 Mon Oct 30 13:49:42 UTC 2006 i686 GNU/Linux

という環境です.

new-server のマシンスペックで関係しそうな部分は,

   - CPU:Intel(R) Pentium(R) D CPU 2.80GHz
   - Chip Set:Intel E7230
   - メモリ:1GB
   - Swap:2GB
   - HDD:購入当初の 80GB + 増設した Maxtor MaxLine 250GB
   - NIC:Intel Pro 1000 GT PCI (ドライバ e1000)

詳細は,若干の違いもありますが,概ね

   http://www.dell.com/downloads/jp/products/pedge/poweredge830.pdf

にあるとおりだと思います.

squid のバージョンは 2.5.STABLE9 で,インストールは,

   apt-get install squid

で行いました./etc/squid/squid.conf で有効になっている部分だけ
(コメントアウトされている部分だけ)抜き出しますと(IP 等一部置き換えます)
以下のとおりです:

http_port 8080
icp_port 0
cache_peer parent-proxy-server.foo.ac.jp parent 8080 7 no-query
   # 階層 Proxy にしています
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 64 MB
cache_dir ufs /var/spool/squid 1500 16 256
ftp_user proxyuser@xxxxxxxxx
dns_nameservers 127.0.0.1 aaa.aaa.aaa.aaa bbb.bbb.bbb.bbb ccc.ccc.ccc.ccc
   # 後ろ3つは本当は参照している DNS の IP です.
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern .		0	20%	4320
auth_param basic program /usr/lib/squid/ldap_auth -b "ou=Users,dc=foo,dc=ac,dc=jp" -f "(&(uid=%s)(objectClass=posixAccount))" ddd.ddd.ddd.ddd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl user-auth proxy_auth REQUIRED
   # 上の5行は LDAP 認証のためです
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl systemA src xxx.xxx.xxx.xxx
acl systemB src yyy.yyy.yyy.yyy/25
acl systemC src zzz.zzz.zzz.zzz/24
acl systemD src www.www.www.www/24
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563	# https, snews
acl SSL_ports port 873		# rsync
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443 563	# https, snews
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl Safe_ports port 631		# cups
acl Safe_ports port 873		# rsync
acl Safe_ports port 901		# SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl KINSHIURL1 dstdomain 2ch.net mixi.jp
acl KINSHIURL2 url_regex 2ch mixi
http_access deny KINSHIURL1
http_access deny KINSHIURL2
   # 2ch と mixi への接続を切っています
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow sysytemA
http_access allow sysytemB
http_access allow systeemD user-auth
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname foo.ac.jp
always_direct allow localhost
always_direct allow systemC
never_direct allow all
coredump_dir /var/spool/squid

このように設定した squid 経由の全てのサイトの閲覧が遅いという訳ではなく,
大きめの画像や JAVA アプレットがある海外のサイトでもスムーズに閲覧できる
場合もあります.

通信速度の著しい低下は,例えば flush を用いたサイトを閲覧した
場合に非常に顕著で,flush を使ったサイトが表示されるまでに
大体5分程かかってしまいました.swf ファイルの容量にはよらず,
flush が現れた途端に遅延に直面するといった具合です.
squid を再起動しても症状は変わりません.

例えば以下のサイト,

   http://zx.sokudo.jp/

で new-server の squid を経由して通信速度を測定しますと,

   速度.jp スピードテスト 高機能版 回線速度 測定結果
   http://zx.sokudo.jp/ v3.0.0
   測定時刻 2007/05/17 16:55:13
   回線速度/経路長/OS 会社や大学など/-/Linux/東京都
   サービス/ISP -/その他
   サーバ1[N] 177kbps
   サーバ2[S] 2.31Mbps
   下り受信速度:2.3Mbps(2.31Mbps,289kByte/s)
   上り送信速度:6.6Mbps(6.67Mbps,830kByte/s)

という結果になります.特に,サーバ1[N] については常に 150kbps 程度の
値しか得られません.

接続が遅くなっている時に log にエラーを示すメッセージは現れません.
例えば flush を使っている上記の速度測定サイトを閲覧している場合,
/var/log/squid/access.log には,

1179388512.642   3385 133.9.102.209 TCP_MISS/200 14162 GET http://sv12.sokudo.jp/41.swf? - FIRST_UP_PARENT/parent-proxy-server.foo.ac.jp application/x-shockwave-flash
1179388517.000   3382 133.9.102.209 TCP_MISS/200 20698 GET http://zx.sokudo.jp/41.swf? - FIRST_UP_PARENT/parent-proxy-server.foo.ac.jp application/x-shockwave-flash
1179388517.650     89 133.9.102.209 TCP_MISS/200 367 POST http://zx.sokudo.jp/cgi-bin/upload2.cgi - FIRST_UP_PARENT/parent-proxy-server.foo.ac.jp text/html
1179388518.411    114 133.9.102.209 TCP_MISS/200 367 POST http://zx.sokudo.jp/cgi-bin/upload2.cgi - FIRST_UP_PARENT/parent-proxy-server.foo.ac.jp text/html
1179388518.554     36 133.9.102.209 TCP_MISS/200 405 POST http://zx.sokudo.jp/cgi-bin/log2.cgi - FIRST_UP_PARENT/parent-proxy-server.foo.ac.jp text/html

/var/log/squid/store.log には,

1179388432.764 RELEASE -1 FFFFFFFF 9A5AD3D455DC4A22C59C0F12F7848E4D  200 1179388319 1145937743        -1 application/x-shockwave-flash 3114198/14182 GET http://sv11.sokudo.jp/41.swf?
1179388437.092 RELEASE -1 FFFFFFFF A3B9A267B7CC36C5C5967F6531E3D486  200 1179388349 1145937533        -1 application/x-shockwave-flash 3114198/21274 GET http://zx.sokudo.jp/41.swf?
1179388437.814 RELEASE -1 FFFFFFFF 6F2EB2998E6D2E1BA6AF6FB5FBA27AFB  200 1179388328        -1        -1 text/html -1/91 POST http://zx.sokudo.jp/cgi-bin/upload2.cgi
1179388438.530 RELEASE -1 FFFFFFFF A28D3A6CCDFDB92A8A726091AA49D4B3  200 1179388354        -1        -1 text/html -1/91 POST http://zx.sokudo.jp/cgi-bin/upload2.cgi
1179388438.590 RELEASE -1 FFFFFFFF FE402818301B290D5712FBC32E99294F  200 1179388328        -1        -1 text/html -1/129 POST http://zx.sokudo.jp/cgi-bin/log2.cgi

のように記録されています.

そこで,試しに squid_2.6.5.orig.tar.gz を取得して new-server 上で
コンパイル/インストールしてみましたが,結果はほとんど変わりませんでした.
インストールは apt で入れた squid と干渉しないようにと,

   ./configure
   make all
   make install

で /usr/local/squid 配下にとりあえず入るようにし,
/usr/local/squid/bin/RunCache を実行して起動しました.

new-server はそれまで稼働していたマシン (old-server) のマシントラブル
多発のために,リプレースする形で導入したのですが,試しにこの old-server を
立ち上げ,new-server の squid.conf を使って(上記した設定が有効になっている 
squid.conf です) squid を起動し,old-server 経由でインターネット接続を
試したところ,例えば,上記速度測定サイトでの結果は,

   速度.jp スピードテスト 高機能版 回線速度 測定結果
   http://zx.sokudo.jp/ v3.0.0
   測定時刻 2007/05/17 18:26:12
   回線速度/経路長/OS 会社や大学など/-/Linux/東京都
   サービス/ISP -/その他
   サーバ1[N] 42.9Mbps
   サーバ2[S] 44.1Mbps
   下り受信速度:44Mbps(44.1Mbps,5.52MByte/s)
   上り送信速度:43Mbps(43.1Mbps,5.3MByte/s)

となり,new-server の場合よりも1桁高速にアクセスできています.
特に,サーバ1[N] からの値は非常に改善しました.

また,別な速度測定サイト:

   http://junkhunt.net/icsi/

で測定しますと,2つのサーバで,より顕著な差が見られ,

   - new-server の squid 経由
     max40 kbps      max5.08 kB/s
     1回目 262085 Byte 51.63 sec 5.08 kB/s 40 kbps
     2回目 271700 Byte 53.46 sec 5.08 kB/s 40 kbps
     3回目 277162 Byte 54.41 sec 5.09 kB/s 40 kbps

   - old-server の squid 経由
     max54080 kbps      max6760.05 kB/s
     1回目 262085 Byte 0.08 sec 3403.70 kB/s 27229 kbps
     2回目 277162 Byte 0.04 sec 6760.05 kB/s 54080 kbps
     3回目 260153 Byte 0.06 sec 4485.40 kB/s 35883 kbps

という結果が得られました.
もちろん new-server と old-server は同じネットワークに接続されています.

old-server は僕が赴任する前に導入されていた,業者が組んで納品したマシンで,
詳細が分からない部分もありますが,Debian sarge (kernel 2.4.26-1-686),
CPU Intel(R) Pentium(R) 4 CPU 2.80GHz,メモリ1G,
HDD 40GB(SCSI) + 120GB(SCSI),swap 1GB,NIC は Onboard ですが,
Intel 製です,lspci しますと,

   Ethernet controller: Intel Corp. 82540EM Gigabit Ethernet Controller

とでます.ドライバは e1000 です.
old-server の Squid のバージョンも new-server と同じで 2.5.STABLE9 です.

new-server と old-server に対して,例えば sftp によるファイル転送を
行うと,両者でファイルの転送速度に違いはほとんど見られません.今の所,
squid を介した接続でしか,通信速度の著しい違いは見受けられない状況です.

最初 PowerEdge の Onboard の NIC がボトルネックになっているのかと思い,
Intel の NIC を導入したのですが改善されず,squid のコンパイルでも
改善しませんでした.

こういった状況で,squid 経由の通信遅延が何が原因で,どこで起こっているのか
掴みかねている状況です.

Squid の設定で見落としている点や,改善に繋がりそうな指針などありましたら,
ポインタでも構いませんので,ご教授頂ければと思います.

よろしくお願い致します.

 
--
荒木田 英禎