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 tnrain - 29 January, 5:19 PM
误闯进来 看看
#1 黄慧 - 26 January, 6:04 PM
呵呵,给我们也提了个醒,好人一生平安,新年快乐.