为MySQL数据库增加线程内存监控
我也说几句2012年05月01日 10:48分 作者:P.Linux 来源:TT中国
使用MySQL中我经常发现mysqld的内存使用会涨的很快(Buffer Pool是大页分配的),以至于使用SWAP,到底Server层用了多少内存,没有一个监控机制,所以第一步我编写了个patch(基于5.6.6)来监控每个线程用了多少内存,一旦mysqld进程使用太多内存,就去看哪些线程用的多,杀掉这些线程。
打上补丁后的效果像这样:
This is the effect after patched:

代码可以看patch
5.6_thread_mem_usage.patch
基本方法就是在my_malloc和my_free中增加回调函数,获取调用my_malloc和my_free函数的THD描述符,用THD中新加的malloc_size字段去记录申请和释放内存,其实my_realloc也应该去更新malloc_size,暂时还没加进去。
然后使用malloc_usable_size函数在free时判断指针申请了多少内存,在GCC 4.2以上可以使用malloc_size(pointor)去判断。
下一步我会分类监控,把每个线程sort_buffer/join_buffer/net_buffer等线程级内存都分类统计出来占用多少,方便更直观的监控。
我也说几句责任编辑:软件频道 联系邮箱:yu_xiang@cnw.com.cn
更多相关文章
更多相关专题
| [专题]IBM软件:云时代的黄金盛宴 IBM连续发起了对Lotus、Tivoli、Informix、Rational等领先软件企业的重量级收购,组建起业内最为丰富的中间件产品家族,并成长为全球最大的企业级软件提供商。 |
年终巨献 2010软件业界大事记盘点 2010即将过去,在这一年中必然有几家欢喜几家愁,有成有败。软件行业也不例外。今年软件业界出现的新潮流主要有社交网站Facebook、Twitter等与软件进行整合,网络地图... |
我也说几句
- 频道周TOP10
- 频道月TOP10
最新发布
更多重磅专题
Fortinet公司是全球领先的网络安全设备供应商和统一威胁管理(UTM)市场领...
RSA大会是信息安全界最有影响力的业界盛会。21年来,RSA大会一直吸引着世界...
北京时间3月7日下午,英特尔在中国正式发布英特尔至强处理器E5-2600/1600产...
更多Blog





