Justin’s Blog

Web developer, I love this game.

job.aliued.com前端招聘第三题,其中一个题解,我的亲身经历

posted by Justin January 26th, 2008.2 Comments

job.aliued.com 中,前端招聘的第三道大题是这样的:

处理紧急情况

好了,我们的页面完成了。
于是我们将页面发布上网。
突然,晴天霹雳,页面无法访问了,这时候,你会怎么做?

前段时间 ,亲身经历了这个情况,算是对这道题的其中一个解答。这道题目的答案应该有很多,我所说的只是其中一种。

情况是这样的。

那天是阴沉沉的,杭州的天空飘洒着一些细雪,我正在被一堆逻辑所困扰。突然,美貌与智慧并存的RITA同学发来消息,“XXX访问不了了!”。(这个时候,题目就开始了)得到的信息只有:“XXX访问不了了!”这么一句话。

第一件事情,确定故障范围。

我直接打开XXX,发现HTTP请求仍然存在,但是速度很慢。这里可以判断出,并非美貌与智慧的个人电脑问题,也不是DNS的问题。只能在1个地方重现问题,和能够在2个地方重现问题,是有本质区别的。这个时候,我第一反应是网络问题,但是马上被否决了,因为机器在内网,其他的内网机器之间互通很流畅,惟独这台机器有问题。

于是我SSH上了这台出问题的机器,仍然发现有点慢。这个时候,开始做抢救,第一时间把不必要的应用和服务全部关闭,只留下关键的一个应用服务。发现速度略微有些提升。问题没解决,应该也不是出在那几个被停掉的服务上。我TOP了一下,正在观察内存CUP的时候,发现有些反常,抬眼一看,LOAD高达45,平时也就零点几。

这时候,表面原因算是找到了,但是真正的原因还没找到。边上的一位同事给了我一个信息,“文件无法上传了”。看了下出错提示,说的是路径不存在。那应该是路径有问题,于是去查看路径,发现只要一CD到那个目录就卡死。90%定位了问题,是由于mount出了问题,有进程要过去,但是一直卡住,于是进程被挂起,N个进程都被挂起,LOAD就高起来了。心中一喜(虽然有问题,但是发现问题总是很开心的),于是开始在各个应用上发通知,通告将重起服务器。然后切断mount连接,重起被连接的服务器;同时,关闭出问题的服务器,重新启动;两台机器都起来的时候,重新建立mount。访问过去,一切正常。

开始启动apache等等,一切恢复正常。

回头看看整个过程,一开始,我确定出问题的范围、性质。因为非技术人员报上来的问题,未必就是技术问题。在确定了是属于服务端的问题,再从服务器入手。当我观察服务器能连接并反馈HTTP的时候,我先停了非关键应用,因为那个关键应用影响太大,即使慢也要跑。然后观察服务器状态,发现是LOAD太高,那么就是有哪个地方堵上了。这里非常幸运,我得到了同事提供的消息,一下子找到了原因。如果没有其他提示,是需要看LOG、系统MAIL等来找问题的,其实也能快速定位的。

好拉,宕机的事情其实经常发生,大小范围的问题。这次还没碰上集群和大访问量,还有数据库等难搞的事情,也不算太倒霉。前段时间还搞过一个数据库文件损坏的问题,那一个叫诡异啊。好了,废话不多说了,快过年了,祝大家身体健康,万事如意。

2 Responses

#1 黄慧 - 26 January, 6:04 PM

呵呵,给我们也提了个醒,好人一生平安,新年快乐.

#2 tnrain - 29 January, 5:19 PM

误闯进来 看看

Leave a Comment

If this is your first comment it may be held for moderation. You can follow any responses to this entry through the RSS feed, or Trackback from your own site.