Druid 连接泄漏监测
當(dāng)程序存在缺陷時,申請的連接忘記關(guān)閉,這時候,就存在連接泄漏了。Druid提供了RemoveAbandanded相關(guān)配置,用來關(guān)閉長時間不使用的連接。例如:
配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">... ...<property name="removeAbandoned" value="true" /> <!-- 打開removeAbandoned功能 --><property name="removeAbandonedTimeout" value="1800" /> <!-- 1800秒,也就是30分鐘 --><property name="logAbandoned" value="true" /> <!-- 關(guān)閉abanded連接時輸出錯誤日志 -->... ...</bean>配置removeAbandoned對性能會有一些影響,建議懷疑存在泄漏之后再打開。在上面的配置中,如果連接超過30分鐘未關(guān)閉,就會被強行回收,并且日志記錄連接申請時的調(diào)用堆棧。
內(nèi)置監(jiān)控頁面查看未關(guān)閉連接堆棧信息
當(dāng)removeAbandoned=true之后,可以在內(nèi)置監(jiān)控界面datasource.html中的查看ActiveConnection StackTrace屬性的,可以看到未關(guān)閉連接的具體堆棧信息,從而方便查出哪些連接泄漏了。
web應(yīng)用
如果你的應(yīng)用配置了WebStatFilter:?https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter
在內(nèi)置監(jiān)控頁面weburi-detail.html中,查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount屬性,如果不相等,就是泄漏了。
https://github.com/alibaba/druid/wiki/%E8%BF%9E%E6%8E%A5%E6%B3%84%E6%BC%8F%E7%9B%91%E6%B5%8B
總結(jié)
以上是生活随笔為你收集整理的Druid 连接泄漏监测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想开茶馆需要做的准备 多想多学习才有好的
- 下一篇: 开换卡费20是什么意思