今天天气不错,挺风和日丽的~~
       哼着小曲儿我走在上班的路上,谁想到迎接偶的却是一个紧张、刺激并心有余悸的上午。。。
       一进公司门,研发的木村拓哉,hr的山口百惠,市场的高仓健同时向偶奔来,看似面带怒色,那架势!偶忽然一惊,竟有转身撒腿就跑的想法。。。无奈太迟了。。。几个人把我按住,七嘴八舌说了一大堆,偶由于惊恐过度,竟没听明白~~~后来终于知道原委,原来是公司不能上网了。。。还已为什么事情,吓得哥!

       公司内网通过一台代理服务器连接外网,典型的squid+iptables,用了6年,一直很稳定,平时如果不能上网,一般重启一下路由器或者squid就可以了。
       今天偶再次把握十足地坐下,远程到代理服务器后台,service squid restart,坐等成功的喜悦~~呀呼~~
       咦~今天有点奇怪了,怎么重启了还是不能上网?我再重启了一次,情况依旧,而且没有什么特别的提示。
       哦,也许是机器运行久了,有点失灵,重启机器试试~reboot~偶也
       额...貌似怪怪的,重启成功了,squid也起来了,但为何还不能上网...偶开始有点不安,莫非是机器出问题了?
       偶火速赶到机房,老老实实再把机器重启了一次,启动过程过程没发现什么异常,squid也随系统起来了,挺正常的,谨慎地在代理服务器上ping了一下外网,ok,通了~这回应该可以上网了吧。
       再次回到座位上,结果还是不能上网...面对周遭“恶毒”的眼神,偶的心理状态:乌云密布,直落谷底。。。唉,一步步来排错吧。。。
 
       首先测试squid主程序,star和shutdown都没有报异常,看来没什么问题,iptables规则没改过~重启了几次,确定不会干扰到正常访问外网。
       接着就是检查磁盘空间,df -h一下,磁盘空间还剩余不少,恩~应该不是这个问题。
       难道是系统问题~ps、netstat、ls、vi、tail...一时间命令满天飞,时间一分一秒过去,但还是没有一点头绪。。。咋就这么倒霉呢~~

       叹息间,无意中按到键盘的向上键,就是返回上一个查看squid进程的命令"ps -ef |grep squid",忽然发现squid的进程没有了,而我并没有做过任何kill操作,恍然大悟,tmd原来问题的结症就是squid启动后一段时间被系统自动kill掉了,squid被kill掉,自然而然就不能上网了!



如上图所示通过ps命令确定squid已经启动,时间是9:21



可见,时间还是9:21,squid的进程在1分钟内无缘无故消失了,导致断网。

       奶奶的总算找到方向了,对于squid的自残行为,偶感到很愤怒,被耍之余还要面对一个全新的问题,系统问题,得回归到系统本身,就是系统日志。
 
#tail -n 100 /var/log/message
浏览系统日志文件message的最后一百行,有如下图的提示


可见squid反复不断地崩溃,源自一个叫single 25的东西,一直在杀squid的进程,就算重启,也只能维持很短一段时间就被干掉,引出一句关键的总结性报告“ Exiting due to repeated. frequent failures”!!!

根据这句话,g了一下,原来是squid日志文件惹得祸!

squid默认的日志文件 /var/log/squid/access.log,和缓存日志文件 /var/log/squid/store.log,这两个文件会在使用中不断增大,文件大小如果达到一定的程度(大概是2g左右),直接导致squid的自残行为。晕菜~~

因为这两个文件会根据squid的配置文件squid.conf重新自动生成,所以暂时的解决方法是将他们 直接删除,然后再次重启squid,问题解决了~~回头一看,已是午饭时刻。

这一刻,网通了,心情好了,食欲振了,腿也不抽筋了~~


       虽然问题解决了,但这样并不是长远之计,squid的日志文件还是一天天的增大,所以偶正在研究如何分割squid的日志,能一劳永逸,呵呵,有成果第一时间和大家分享~~~