跳至主要内容

解决 Squid:filedescriptors 错误


今天领导在Gtalk上叫我,说我们的Squid有问题,流量不对。于是回头一看Mrtg果然流量呈波浪,怪了,为何会这样?初步已经否定了是Squid 服务器重启的可能性。于是登录查看log :

#cat /var/log/squid/cache.log | more

从流量图上应该能判断出出问题的时间应该是在20:15分左右,果然在当时Squid发生了告警:


2009/01/17 20:13:41| WARNING! Your cache is running out of filedescriptors
2009/01/17 20:13:57| WARNING! Your cache is running out of filedescriptors
2009/01/17 20:14:13| WARNING! Your cache is running out of filedescriptors
2009/01/17 20:14:29| WARNING! Your cache is running out of filedescriptors
2009/01/17 20:14:45| WARNING! Your cache is running out of filedescriptors


既然filedescriptors不够了,那就调一下:

#ulimit -SHn 65535

结果仍然没有效果,汗......差点放弃,想重启机器得了。但是一想这也可能跟squid.conf有关,于是又手动改了一最后一行的值:

#vim /etc/squid/squid.conf

max_filedescriptors 655360

或者你用echo 也行 :P
#echo "max_filedescriptors 655360">> /etc/squid/squid.conf

OK,重启你的squid 看看吧。

#service squid restart /*你也可以用kill -HUP*/

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.28 #1 SMP Tue Dec 30 10:31:34 CST 2008 x86_64 x86_64 x86_64 GNU/Linux
Squid Cache version 2.6.STABLE22 for x86_64-redhat-linux-gnu



修改之后问题一切都解决了。
当然,你也可以参照一下老外的改法(请不原样照搬,自己想原因,找出路永远是最好的)
原来不同的系统下的Squid配置文件是不一样的。。。Linux永远是这么乱!!!!!还是BSD好。
附:

Debian

nano /etc/defaults/squid   
SQUID_MAXFD=4096  
/etc/init.d/squid restart 

Ubuntu

nano /etc/default/squid   
SQUID_MAXFD=4096  
/etc/init.d/squid restart 

评论

发表评论

读过之后是不是文思泉涌了?快快让大家拜读一下你的高见吧~~~