天天看點

squid錯誤排查

 1.

COSS will not function without large file support (off_t is 4 bytes long. Please reconsider recompiling squid with –with-large-files

Bungled squid_webcache.conf……

檢查是否在編譯squid的時候未加入 –with-large-files 選項,如果是,重新加入此選項再編譯一次squid

2.使用coss緩存格式的時候,squid不斷重建cache

可能原因為maxfullbufs值過低,去掉maxfullbufs限制,讓其值為無限

3.日志中有類似如下的内容:

2007/03/05 14:46:56| Ready to serve requests.

2007/03/05 14:46:59| clientReadRequest: FD 11 (192.168.1.5:34061) Invalid Request

Illegal character in hostname; underscores are not allowed

注釋: 無效的字元串,通路位址中不允許下劃線。

解決辦法 :

squid 2.5 中,編譯的時候加入如下參數

–enable-underscore 允許解析的URL中出現下劃線,因為預設squid會認為帶下劃線的URL位址是非法的,并拒絕通路該位址。

對于 2.6 版本,編譯時沒有這個參數,這個參數出現在 squid.conf 的配置文檔裡,說明是這樣的:

allow_underscore New option to allow _ in hostnames, replacing the similar build time configure option in 2.5 and earlier.

具體的在 squid.conf 中的參數,可以在配置文檔裡搜尋一下 allow_underscore,看一下配置文檔的具體注釋。

4.squid的cache.log日志中又類似如下的警告:

WARNING: 100 swapin MD5 mismatches

這個錯誤是說squid讀入一個緩存檔案的時候,存儲在接口對應的位置的URL不是

squid認為應該存儲在那裡的資料。這可能是swap.state有錯誤或檔案指到了磁盤上錯誤的塊(檔案系統有錯誤)。

停止squid應用,删除swap.state然後啟動squid,讓它通過讀取緩存檔案來重建緩存

記錄,如果重建後仍然出現上面的情況,那應該就是檔案系統或磁盤有問題了。

5.日志中出現下面警告:

Jun 28 11:14:38 localhost squid[27178]: squidaio_queue_request: Syncing pending I/O operations.. (blocking)

Jun 28 11:14:59 localhost squid[27178]: squidaio_queue_request: Synced

Jun 28 11:14:59 localhost squid[27178]: storeAufsOpenDone: (2) No such file or directory

Jun 28 11:14:59 localhost squid[27178]: /data/squid/cache_webcache1/00/6B/00006B29

Jun 28 11:14:59 localhost squid[27178]: /data/squid/cache_webcache1/00/DC/0000DC36

Jun 28 11:14:59 localhost squid[27178]: WARNING: 1 swapin MD5 mismatches

Jun 28 11:14:59 localhost squid[27178]: WARNING: Disk space over limit: 18925740 KB > 16777216 KB

Jun 28 11:14:59 localhost squid[27178]: /data/squid/cache_webcache2/00/92/0000924F

Jun 28 11:14:59 localhost squid[27178]: /data/squid/cache_webcache1/03/6F/00036FB6

Jun 28 11:14:59 localhost squid[27178]: squidaio_queue_request: Async request queue growing uncontrollably!

解決方法:

檢查配置檔案,cache設定為aufs檔案系統格式,将此設定改為ufs,重建cache緩存目錄

6.運作reconfigure的時候出現squid: ERROR: no running copy

原因是找不到pid檔案,如果不是使用預設的squid.conf作為squid 的設定檔案,在用squid目錄下sbin/squid進行重新啟動等動作的時候要加上-f的參數制定配置檔案,同時檢查pid檔案是否存在,有時候可能 錯誤地配置了pid檔案到不存在的目錄,或者将pid檔案配置到了應用沒有權限寫入的目錄,導緻沒有建立pid檔案,如果pid檔案不存在,可以手工建立 該pid,然後擷取squid的pid并寫人pid檔案。

7.squid在壓力大的情況下響應非常慢

檢查是否檔案描述符太小,如果是,調整檔案描述符限制,重新開機squid,檢查squid運作的檔案描述符,如果為調整後的,則在啟動腳本處啟動squid的地方加入調整檔案描述符的指令,否則除此外還需先調整檔案描述符限制然後重新編譯安裝一次squid

8.緩存效率下降,檢視日志無報錯,netstat -na檢視連接配接有比較多的連接配接為SYN_RE,且多為同一IP過來的連接配接

優化TCP網絡

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

echo 1 > /proc/sys/net/ipv4/tcp_synack_retries

echo 1 > /proc/sys/net/ipv4/tcp_syn_retries

9.緩存效率低,網卡輸入輸出流量差距很小。

首先檢視系統日志有無squid的報錯,如果沒有再檢視dmesg,看看有無丢包,是否網卡問題,如果沒有再檢視網關

使用squid的時候網關問題關系重大,如果網關沒有配置正确,将可能導緻使用者通路不了。

10.日志報如下錯誤:squid: Could not determine fully qualified hostname. Please set ‘visible_hostname’

檢查/etc/hosts檔案./etc/sysconfig/network檔案.和hostname指令結果,看看三者是否對應,如果不對應,需要修改為對應,并且/etc/hosts檔案中對應的配置還需要有合法域名格式

/etc/sysconfig/network中的hostname是系統啟動時候加載的hostname值,如果此值與/etc/hosts檔案中的值不對應并且squid中沒有設定visible_hostname選項的話,會導緻系統重新開機後squid不能正常啟動。

11.日志大量報如下錯誤:

Apr 29 08:28:56 localhost squid[13851]: httpReadReply: Excess data from “HEAD http://192.168.230.1/”

這表明伺服器傳回一個超過squid聲明的響應對象最大值的傳回值。

它違反了HTTP協定并導緻伺服器傳回被截斷。

12.runcache發現頻繁重新開機後停止服務:

:./bin/RunCache Running: squid -sY >> /usr/local/squid//var/squid.out 2>&1

./bin/RunCache: line 35: 20000 File size limit exceededsquid -NsY $conf >>$logdir/squid.out 2>&1

./bin/RunCache: line 35: 20177 File size limit exceededsquid -NsY $conf >>$logdir/squid.out 2>&1

RunCache: EXITING DUE TO REPEATED, FREQUENT FAILURES

故障原因: log超過了ext3檔案系統最大支援容量2G導緻,解決辦法:

1)每天輪循一次日志0 0 * * * /usr/local/squid/sbin/squid -k rotate

13.報錯資訊:

FATAL: Failed to verify one of the swap directories, Check cache.log

for details. Run ’squid -z’ to create swap directories

if needed, or if running Squid for the first time.

Squid Cache (Version 2.6.STABLE18): Terminated abnormally.

未執行squid -z指令需要執行該指令初始化cache目錄,假如想觀察這個過程 squid -zX

Creating Swap Directories

FATAL: Failed to make swap directory /usr/local/squid/var/cache/00:

(13) Permission denied

确認/usr/local/squid/var/cache目錄的所有組成都可被squid.conf給定的使用者ID通路

14.報錯資訊:

WARNING:squidaio_queue_request: WARNING – Queue congestion

IO的隊列滿了, ,重谝一下源代碼,加大IO的隊列或換一種IO方式。

編譯時:–enable-async-io=40 (我的是40,少了)

15.報錯資訊:

helperOpenServers: Starting 5 ‘dnsserver’ processes

ipcCreate: fork: (12) Cannot allocate memory

WARNING: Cannot run ‘/opt/squid/libexec/dnsserver’ process.

繼續閱讀