今天天气不错,挺风和日丽的~~
哼着小曲儿我走在上班的路上,谁想到迎接偶的却是一个紧张、刺激并心有余悸的上午。。。
一进公司门,研发的木村拓哉,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的日志,能一劳永逸,呵呵,有成果第一时间和大家分享~~~