一次线上db连接泄漏问题排查

2016-10-13  本文已影响102人  randyjia

一次db连接泄漏问题排查

预备知识

问题描述

最近从监控平台发现db的可用连接数长时间没有回复到初始值,怀疑是有db连接泄漏。截图如下

屏幕快照 2016-10-12 下午6.02.04.png

登录到终端后,执行
<pre>
mongo_comm:get_info().
</pre>

确实验证了这个问题,长时间可用的连接维持在26,甚至更低,而连接池初始大小为30,正常情况下,应该回归到30

问题定位

问题验证

已经找到了调用方了mongo_exchange:get_order/2。
查看源代码,发现果然有问题
<pre>
get_order(id, Id) ->
{ok, Conn} = mongo_comm:get_conn(),
case mongo:find_one(Conn, ?COLLECTION_ORDER, {'_id', Id}) of
{} -> no_order;
{Ans} ->
bson_to_order(Ans)
end;
</pre>
代码中缺少了关闭连接的方法调用!

问题修复

屏幕快照 2016-10-13 上午9.35.09.png

其它

上一篇 下一篇

猜你喜欢

热点阅读