crash

All posts tagged crash

项目是个老项目,都有10来年的历史了,我接手的时候已经是全区服大约每天共有4次左右的宕机,直接后果是宕机服务所在地图的玩家会回档几分钟。

据同事和运维的同学反映,自从上半年上了一个资料片以后,宕机的频率就翻了一倍多。

从宕机的core信息来看的话,基本上每次都宕在某些固定函数里,这样的函数一共大概有7,8处。把这些函数相关的一些隐患点重新整理了一遍以后,仍然没有什么成效。

从代码更改的角度入手或许是个好办法,但是这一版的代码改动很多,而且还加上了一个代码库迁移,我们的库又有多个分支:开发的分支,发布的分支。于是写这个资料片的同学们又重新捋了一边,把一些觉得隐患较大的点也做了屏蔽,但是依然没有什么成效。

反反复复的再把这些core分析了一遍,直觉告诉我,很大的问题应该还是内存出错了。

于是用一些工具和设计上的方案来验证和分析,如Valgrind, ElectricFence, tcmalloc,但由于我们使用的Linux系统老旧,所以跑起来也不是很顺畅。

于是,重新一行行的去review相关的代码,以及对新旧库的代码做一些比较,重点在内存的使用上,如memcpy,数组越界等。确实找出了一些很隐蔽,但很严重的隐患。

原本以为这么一捋,大概能解决70%左右的宕机,结果是一条宕机也没有,很开心。

宕机的问题,在设计和实现的时候就应该避免。但是有时候,对吧,你懂的。无论如何,出现这些问题,也应该立即解决才是,拖的越久,解决起来越来越不容易,尤其是那些缺乏基础设施的程序。