Jun 152007
 

今天接到一个Troubleshooting的Case非常有意思,记录下来。

一台Linux Server,跑得是普通的LAMP架构的web站点,有数十个VirtualHost。同时还有postfix等服务,但几乎不使用,客户称是使用了某厂商的Hosting Panel软件管理的,以前一直正常,突然今天不知道为什么上面的站点都打不开了。据客户称是没做过什么操作,一直运行正常(出了问题有很多客户都这么据称,和讳疾忌医一个道理)。

登录上去简单看了一下,uptime正常,负载很低,top以及检查各项服务都正常,但是确实服务器上Hosting的站点打不开,但不是完全打不开,是非常缓慢,就是5分钟才能显示几个字的那种。快刀斩乱麻排除了DNS解析,网络连通等问题,看来不得不把问题定位在apache+php+mysql了。

tail了一下access_log和error_log,发现访问日志是有的,但每十几秒才出一条,显然与客户站点访问量不符,error_log中没有任何应用报错的信息。遂建立了phpinfo文件访问,发现一样问题,排除客户程序原因。进而建立随手写几个字符的html,也访问极慢,这样PHP+Mysql又被排除了。直接rpm -V httpd,发现客户是使用了发行版自带的httpd,也就稍微改了下配置文件。而配置文件草草浏览了一下也找不出问题来,除了建立VirtualHost几乎没做修改。

到目前为止表面上看不出任何异常来,令人郁闷无比。唯一可以说有点异常的地方就是ps看到的httpd进程有点多,但也估计是由于被block的request积累导致的。无奈启用mod_status想看看各个request是什么状态,竟然发现连/server-status都被block了,一样地慢!一怒之下,直接strace httpd,跟了3个发现都卡在connect调用,连接10.11.12.13:6802这个端口上。要说PHP有可能往外connect我信,但是html也受影响?不对,貌似6802是Resin的端口嘛!这玩意不熟,但八成跑不了就是它的原因了。netstat -an一看,果然有数个往10.11.12.13:6802的SYN_SENT。

继续顺着线撒网!对于不熟悉的东西,咱有个屡试不爽的绝招:grep!直接 grep -R ’10.11.12.13′ /etc,再不行grep root目录,就不信揪不出你来,结果居然是……. grep不到-_-b

又郁闷了,现在是apache在连一个莫名其妙的IP的resin,而这个IP没有存在与任何一个配置文件中……苦苦思考了半天,没办法了,挨条审httpd.conf吧,只要不认识的指令统统当可疑分子抓来细审。

还好这玩意没有挑战在下的耐性,审了大约20分钟,发现一个mod_caucho模块,配置为连接localhost:6802的后端服务,简单放狗一看果然是resin的mod,但是……localhost…….没这么BT吧!!!

ping一下localhost,显示结果果然是10.11.12.13…….-_-b,立马杀奔/etc/hosts发现…….127.0.0.1  localhost…… 没问题?!

先不管了,修改httpd.conf的那条指令,替换localhost为127.0.0.1,restart httpd,访问恢复!WoowW~~

剩下的为什么localhost解析到10.11.12.13这么个奇怪IP去就让客户自己问自己去吧,懒得管了,再管估计又是碰到某奇怪的配置文件,甚至可能是某奇怪的DNS服务器,再或者是碰到某奇怪的DNS Admin,你们自己掐去吧。在下打完收工!

总之,做Sys admin每天碰到千奇百怪的事情太多,真要有海量的知识点才有可能大成,所以有丰富经验的Sys Admin会让人像大熊猫一样养起来….

又总之,在下估计再稍微补习一下就可以造出一套可用的Resin应用服务器了。人逼人,逼成高人阿!

  4 Responses to “localhost导致的灾难”

  1. 呵呵
    以前碰到过,是在WIN下调试程序的时候
    什么样的事情都会有,唉!

  2. 有点意思。记得有一个 losf 命令,可以直接看到什么程序占用某个端口,感觉不需要用grep了。

  3. 在IBM网站看到这个教程,搬过来共享。
    http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html

  4. 呵呵 高手 学习了

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>