squid故障汇总

摘要:
解决方案:在Squid 2.5中,在编译时添加以下参数--启用下划线允许解析带下划线的URL,因为默认情况下Squid会认为带下划线的网址是非法的,并拒绝访问它们。停止squid应用程序并删除swap State,然后启动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]: storeAufsOpenDone: (2) No such file or directory

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]: storeAufsOpenDone: (2) No such file or directory

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

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/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/"

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

 

转自:http://hi.baidu.com/ncache/blog/item/661914102839c176cb80c444.html

 

以下为个人总结

一:报错信息:
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访问

 

二:

WARNING:squidaio_queue_request: WARNING - Queue congestion

IO的队列满了, ,重谝一下源代码,加大IO的队列或换一种IO方式。

编译时:--enable-async-io=40 (我的是40,少了)

三:

helperOpenServers: Starting 5 'dnsserver' processes
ipcCreate: fork: (12) Cannot allocate memory
WARNING: Cannot run '/opt/squid/libexec/dnsserver' process.

系统内存被耗光,没有内存分配给squid的dns进程

四:

FATAL: xcalloc: Unable to allocate 1 blocks of 4108 bytes!

Squid 开启大内存导致进程内存溢出

五:

cache.log
2009/08/27 20:49:55| HTCP Disabled.
2009/08/27 20:49:55| sendto FD 17: (1) Operation not permitted
2009/08/27 20:49:55| ipcCreate: CHILD: hello write test failed
????

cu的朋友总结是configure时编译了--enable-icmp参数,去掉即可。

六:

commBind: Cannot bind socket FD 17 to *:80: (98) Address already in use
FATAL: Cannot open HTTP Port

这个消息出现在bind()系统调用失败时,,因为请求端口已经被其他们应用程序所打开..通常,,若已有一个squid在运行,而又试图启动第2个squid实例,就会发生这种情况..假如你们见到这个错误消息,请使用ps来观察是否squid已经在运行..
Squid 使用SO_REUSEADDR socket选项,,以便bind()调用总能成功,,即使仍有一些残余(的)socket位于TIME_WAIT状态..若该消息出现,,尽管 squid没有在运 行,,但你们(的)操作系统可能在处理这个问题上有bug..重启操作系统是解决问题(的)一个方法..
squid运行时间长了  系统bug?

免责声明:文章转载自《squid故障汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#winform设置DateTimePicker的时间格式国家集训队论文分类整理(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

koa2-cors应答跨域请求实现

var koa = require('koa'); var app = new koa(); var router = require('koa-router')(); // CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 // 下面以koa2-cors为例, const cors...

Linux中获取本机网络信息的几个函数及应用

一、读取/etc/hosts 几个函数 头文件<netdb.h> 1.void sethostent(int stayopen);//开打/etc/hosts 配置文件 2.struct hostent * gethostent(void);//读取配置文件 3.void  enthostent(void);//关闭 /etc/hosts 文件...

IDEA连接SQL Server

package ServletDemo; import java.sql.*; public class Datebase { public static void main(String[] args) throws ClassNotFoundException, SQLException { //加载驱动 C...

sqlmap介绍与使用案例

作者:虫儿飞ZLEI链接:https://www.jianshu.com/p/3d3656be3c60来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 sqlmap介绍与使用案例 1.sqlmap简介 最白话的介绍就是sqlmap是一个工具,一个用来做sql注入攻击的工具 2.windows安装python2 这个sqlmap...

解决fiddler无法抓取本地部署项目的请求问题

在本地部署了几个应用,然后想用fiddler抓取一些请求看看调用了哪些接口,然鹅,一直抓不到。。。 比如访问地址是这样的: 在网上搜罗半天,找到一个解决方法 在localhost或127.0.0.1后增加一个点即可,如下 然后fiddler就抓到了本地发出的请求 还有一种方法: 在localhost后增加.fiddler比如请求http://loca...

CentOS 7磁盘寻找不到,卡在sulogin,造成的开机失败问题--Error getting authority...

今天早上使用内网gitlab仓库的时候,发现页面无法打开,ssh也无法连接。 到机房接上显示器,发现如下错误: Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)...