中国に置いてあるプロキシが故障したと連絡があり、格闘した記録です。
環境
古い!!
- Red Hat Enterprise Linux ES release 4 (Nahant)
- Squid Cache: Version 2.6.STABLE22
現象
以下のエラーメッセージが出現すると代理アクセスを行わなくなる?
squid[3177]: Failure Ratio at 1.20
squid[3177]: Going into hit-only-mode for 5 minutes...
調べたこと
エラーの内容
12.13 "Failure Ratio at 1.01; Going into hit-only-mode for 5 minutes"とは何ですか。
AとBの2つの隣接キャッシュペアがあった時、仮にBのキャッシュのインターネットへの接続が不安定だったとします。
このようなとき、隣接のキャッシュにその事を伝えたいと考えられます。
Squidはトラフィックを追跡しており、リクエストが短期間の ERR_DNS_FAIL や ERR_CONNECT_FAIL や ERR_READ_ERROR で失敗したなら、失敗から成功の比率を1.0以上にします。
このときSquidはICP_MISS ではなく ICP_MISS_NOFETCH を返します。 また、ICP_HIT が増えたならこれを戻します。
動作を確認してみた
以下コマンドラインで
# http_proxy=http://xxx:xxx@10.xx.xx.xx:8080 https_proxy=http://xxx:xxx@10.xx.xx.xx:8080 wget -d http://wx.qq.com
応答
---request begin---
GET http://wx.qq.com/ HTTP/1.0
User-Agent: Wget/1.10.2 (Red Hat modified)
Accept: */*
Proxy-Authorization: Basic xxx=
Host: wx.qq.com
---request end---
Proxy request sent, awaiting response...
---response begin---
HTTP/1.0 503 Service Unavailable
Server: squid/2.6.STABLE22
Date: Wed, 05 Dec 2018 05:08:16 GMT
Content-Type: text/html
Content-Length: 1134
Expires: Wed, 05 Dec 2018 05:08:16 GMT
X-Squid-Error: ERR_DNS_FAIL 0
X-Cache: MISS from xxx
Via: 1.0 xxx:8080 (squid/2.6.STABLE22)
Proxy-Connection: close
---response end---
503 Service Unavailable
Closed fd 3
13:08:16 ERROR 503: Service Unavailable.
ERR_DNS_FAIL ??
参考にしたサイト
Squidはシステムが持っているresolver libraryを使わずに自前の名前解決を
行なうようです。
http://search.luky.org/linux-users.9/msg02857.html
「192.168.1.1 192.168.1.2のどちらかのDNSサーバが生きていれば
プロキシサーバから確実にアクセスできる」ことを目標にするのであれば、
Squid.confに
dns_nameserver 192.168.1.1 192.168.1.2
と記述して動作させてはいかがでしょうか。
※当方でもdns_nameserverに指定してSquidを運用しています
この環境では、dns_nameserverを書いていない。
とりあえず設定してみた。結果、改善した??ように今の所見える。
その他
SSL handshake
SSLv3を有効にしている不適切な端末がWEBサイトにアクセスし、SSL handshakeで失敗していることが原因かと考えた。。。
squidのバージョンが古いので、新しいSSL handshakeが出来ないのではと考えた。。。
しかし、SSLのProxyでは、squidサーバでhandshakeは行わないので関係ないか。。。
最新のsquidにすれば解決するはず!という希望を込めて最新版をインストールした。
squidのインストール
同じサーバに別ポートで起動させて改善するか確認を行う。
yumは、まだない。
ソースからコンパイルしました。
- squid-3.5.28 コンパイルエラー
- squid-3.4.14 コンパイルエラー
gcc-4.4以上が必要みたいでした。
- squid-3.3.14 コンパイル成功!!
configのオプションは以下。必要そうな最低限と思われるものだけを選択してコンパイルしました。
# ./configure --prefix=/usr/local/squid-3.3.14 --with-openssl=/usr/local/openssl-1.0.2q --enable-auth-basic=LDAP,NCSA
--enable-auth-digest=none --enable-auth-negotiate=none --enable-auth-ntlm=none --enable-external-acl-helpers=file_user
ip,unix_group,session
この件を通して学んだ新しいこと
squid access.logの読み方
1543988361.875 44 10.214.57.147 TCP_MISS/200 284 POST http://get.sogou.com/q 20052 HIER_DIRECT/111.202.100.40 text/plain
- 時間はUNIXタイムスタンプ
-
TCP_MISS/200
の部分にHTTPステータスコードがある
UNIXタイムスタンプの変換
このままだと何時かわからないので変換する。awkを使ってやってます。
# cat access.log | awk '{print strftime("%Y/%m/%d %H:%M:%S", $1), $0}'
squidclient
squidの統計情報などが確認できます。
確認できる一覧。いろいろある。
# squidclient -h localhost -p 8080 -u xx -w xx mgr:
HTTP/1.0 200 OK
Server: squid/2.6.STABLE22
Date: Wed, 05 Dec 2018 05:54:09 GMT
Content-Type: text/plain
Expires: Wed, 05 Dec 2018 05:54:09 GMT
Last-Modified: Wed, 05 Dec 2018 05:54:09 GMT
X-Cache: MISS from xx
Via: 1.0 xx:8080 (squid/2.6.STABLE22)
Proxy-Connection: close
mem Memory Utilization public
cbdata Callback Data Registry Contents public
events Event Queue public
diskd DISKD Stats public
config Current Squid Configuration hidden
ipcache IP Cache Stats and Contents public
fqdncache FQDN Cache Stats and Contents public
idns Internal DNS Statistics public
basicauthenticator Basic User Authenticator Stats public
external_acl External ACL stats public
http_headers HTTP Header Statistics public
menu This Cachemanager Menu public
shutdown Shut Down the Squid Process hidden
offline_toggle Toggle offline_mode setting hidden
info General Runtime Information public
filedescriptors Process Filedescriptor Allocation public
objects All Cache Objects public
vm_objects In-Memory and In-Transit Objects public
openfd_objects Objects with Swapout files open public
pending_objects Objects being retreived from the network public
client_objects Objects being sent to clients public
io Server-side network read() size histograms public
counters Traffic and Resource Counters public
peer_select Peer Selection Algorithms public
digest_stats Cache Digest and ICP blob public
5min 5 Minute Average of Counters public
60min 60 Minute Average of Counters public
utilization Cache Utilization public
histograms Full Histogram Counts public
active_requests Client-side Active Requests public
storedir Store Directory Stats public
store_check_cachable_stats storeCheckCachable() Stats public
store_io Store IO Interface Stats public
pconn Persistent Connection Utilization Histograms public
refresh Refresh Algorithm Statistics public
forward Request Forwarding Statistics public
client_list Cache Client List public
asndb AS Number Database public
server_list Peer Cache Statistics public
non_peers List of Unknown sites sending ICP messages public
なんとなくよく見てた内容
# squidclient -h localhost -p 8080 -u xx -w xx mgr:info
HTTP/1.0 200 OK
Server: squid/2.6.STABLE22
Date: Wed, 05 Dec 2018 05:56:20 GMT
Content-Type: text/plain
Expires: Wed, 05 Dec 2018 05:56:20 GMT
Last-Modified: Wed, 05 Dec 2018 05:56:20 GMT
X-Cache: MISS from xx
Via: 1.0 xxx:8080 (squid/2.6.STABLE22)
Proxy-Connection: close
Squid Object Cache: Version 2.6.STABLE22
Start Time: Wed, 05 Dec 2018 00:01:44 GMT
Current Time: Wed, 05 Dec 2018 05:56:20 GMT
Connection information for squid:
Number of clients accessing cache: 939
Number of HTTP requests received: 582409
Number of ICP messages received: 0
Number of ICP messages sent: 0
Number of queued ICP replies: 0
Request failure ratio: 0.09
Average HTTP requests per minute since start: 1642.4
Average ICP messages per minute since start: 0.0
Select loop called: 4412612 times, 4.822 ms avg
Cache information for squid:
Request Hit Ratios: 5min: 1.0%, 60min: 0.4%
Byte Hit Ratios: 5min: 23.9%, 60min: 31.0%
Request Memory Hit Ratios: 5min: 52.2%, 60min: 44.6%
Request Disk Hit Ratios: 5min: 31.3%, 60min: 20.6%
Storage Swap size: 87280 KB
Storage Mem size: 7520 KB
Mean Object Size: 33.27 KB
Requests given to unlinkd: 287
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 0.00091 0.00091
Cache Misses: 5.63745 4.79440
Cache Hits: 0.00179 0.00091
Near Hits: 5.34113 0.05633
Not-Modified Replies: 0.00000 0.00091
DNS Lookups: 19.72745 33.58970
ICP Queries: 0.00000 0.00000
Resource usage for squid:
UP Time: 21276.279 seconds
CPU Time: 123.029 seconds
CPU Usage: 0.58%
CPU Usage, 5 minute avg: 0.52%
CPU Usage, 60 minute avg: 0.48%
Process Data Segment Size via sbrk(): 50300 KB
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Memory usage for squid via mallinfo():
Total space in arena: 50300 KB
Ordinary blocks: 31977 KB 969 blks
Small blocks: 0 KB 0 blks
Holding blocks: 232 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 18322 KB
Total in use: 32209 KB 64%
Total free: 18322 KB 36%
Total size: 50532 KB
Memory accounted for:
Total accounted: 16497 KB
memPoolAlloc calls: 44372128
memPoolFree calls: 44307585
File descriptor usage for squid:
Maximum number of file descriptors: 1024
Largest file desc currently in use: 474
Number of file desc currently in use: 347
Files queued for open: 0
Available number of file descriptors: 677
Reserved number of file descriptors: 100
Store Disk files open: 0
IO loop method: epoll
Internal Data Structures:
2711 StoreEntries
1552 StoreEntries with MemObjects
1518 Hot Object Cache Items
2623 on-disk objects