Posts tagged BugFix

近期Imgsrc一处内存泄露问题的查找和解决

11

最近一直在查我们的imgsrc的内存泄露问题,事实上都是其所使用的ImageMagick库的bug。前些天又查了一个bug,涉及面较广,觉得有必要总结一下。

简要说明一下,imgsrc上部署的是apache模块,cdn通过其来访问tfs,并且做一些图像处理工作。有内存泄露是在线上发现的,内存不停的在涨。要找到问题所在,首先需要能够在线下重现,知道在什么情况下会泄露。线上系统当然不可能用valgrind来跑啦,还好我们有tcpcopy(赞一下网易的 @wangbin579 同学,真是个好东西),我们可以将线上流量镜像到跑着valgrind的机器上来,从而重现问题。跑了一晚上之后问题重现了,这时候需要做的是找到具体能触发问题的http请求。在访问日志和错误日志的帮助下,可以重放这些请求,这样就可以随时重现。一个晚上的访问日志有80多万条之多,我注意到其中有43条是在做图像处理时失败的。这些请求的原图往往都是一些不合法的或已损坏的图。先从这43个请求入手,运气不错,问题已经重现了。这告诉我们多注意一下不法分子总是好的。接下来就是使用2分法来找到具体的某一个访问,可以用脚本来干。最终确定是一个png图片。
(更多…)

关于mysql hang导致nameserver宕机的分析

4

事发当晚:
过程:
mysql 机器告警,说主机down.
nameserver所有mysql线程停止动作,mysql线程池消息队列暴涨。
nameserver内存暴涨。
core.

(更多…)

mod_zoom 在port到64bit机器过程中的bug fix

1

在把mod_zoom模块移植到64bit机器上的时候,发现一旦涉及到mod_zoom的filter功能,马上进程会core dump; 而在32bit机器上不存在此问题;
用gdb跟踪发现core的位置在如下代码;
(更多…)

一个怪异问题的查找过程

4

在C++编程过程中, 有很多怪异问题. 当最后查找到问题所在的时候, 回过头来发现其实一切又都合情合理. 这里简述一下对一个内存访问错误问题的查找过程.
(更多…)

Go to Top