- 浏览: 555357 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
jiang2011jiang:
mybatis3源码核心类1--Configuration -
tuyf_hs:
同求 图片
zookeeper+dubbo+dubbo管理集群的简要配置[单机] -
安静听歌:
请问图片还能找的会吗?你的图片和原文的图片都挂了,,,如果有图 ...
zookeeper+dubbo+dubbo管理集群的简要配置[单机] -
ahua186186:
yngwiet 写道楼主,有一个地方不太明白,为什么要用“ge ...
ListView中getChildAt(index)的使用注意事项 -
yngwiet:
楼主,有一个地方不太明白,为什么要用“getChildAt(p ...
ListView中getChildAt(index)的使用注意事项
解决生产环境接口应用包jboss数据库连接池满的问题
- 博客分类:
- JAVA SE
以前只排查过DHCP连接池泄露的问题,思路是通过btrace脚本收集日志排查问题,jboss用的是自带的连接池,不熟悉,经过查看官方文档终于找到jboss连接池的核心类,如下:
(1)Jboss连接池核心类:InternalManagedConnectionPool :包含2个核心方法:returnConnection (),getConnection()方法。
(2) 当应用需要进行业务处理时,首先会执行一个getConnection的操作,用于从连接池中获取连接,当业务处理完成后,需要把连接放回到连接池中,执行一个returnConnection的操作。
思路1:通过btrace脚本收集日志排查问题
btrace脚本:
监控DHCP连接池:
监控jboss连接池:
思路2:抓取oracle数据库耗费资源的sql语句和 查询Oracle每天执行慢的SQL排查问题
抓取oracle数据库耗费资源的sql语句:
1.http://wukui127.blog.51cto.com/2866802/963370/
Oracle 查询每天执行慢的SQL:
http://blog.itpub.net/28602568/viewspace-1364844/
http://kamiff.iteye.com/blog/725343
参考:
http://www.dbafree.net/?p=378
http://docs.jboss.org/jbossas/javadoc/4.0.2/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java.html
(1)Jboss连接池核心类:InternalManagedConnectionPool :包含2个核心方法:returnConnection (),getConnection()方法。
(2) 当应用需要进行业务处理时,首先会执行一个getConnection的操作,用于从连接池中获取连接,当业务处理完成后,需要把连接放回到连接池中,执行一个returnConnection的操作。
思路1:通过btrace脚本收集日志排查问题
btrace脚本:
监控DHCP连接池:
package test4tool; import static com.sun.btrace.BTraceUtils.println; import static com.sun.btrace.BTraceUtils.timeMillis; import com.sun.btrace.BTraceUtils.Threads; import com.sun.btrace.annotations.BTrace; import com.sun.btrace.annotations.Export; import com.sun.btrace.annotations.Kind; import com.sun.btrace.annotations.Location; import com.sun.btrace.annotations.OnMethod; import com.sun.btrace.annotations.OnTimer; import com.sun.btrace.annotations.Return; import com.sun.btrace.annotations.Self; import com.sun.btrace.annotations.TLS; @BTrace public class BTraceConnection{ @TLS private static long startTime = 0; @Export public static long openedCount; @Export public static long closedCount; @Export public static long i; @OnMethod( clazz="/.*PoolingDataSource/", method="getConnection", location=@Location(Kind.RETURN) ) public static void m(@Return Object obj) { startTime = timeMillis(); openedCount++; println("++++++++++++++++++++++++++++++++One connection is opened!++++++++++++++++++++++++++"); println(obj); Threads.jstack(); } @OnMethod(clazz="/.*PoolableConnection/", method="close") public static void d(@Self Object obj) { closedCount++; println("======================One connection is closed!========================"); println(obj); Threads.jstack(); } @OnTimer(10000) public static void ontime() { println("Total opened connection:"); println(openedCount); println("Total closed connection:"); println(closedCount); } }
监控jboss连接池:
package test4tool; import static com.sun.btrace.BTraceUtils.println; import static com.sun.btrace.BTraceUtils.timeMillis; import com.sun.btrace.BTraceUtils.Threads; import com.sun.btrace.annotations.BTrace; import com.sun.btrace.annotations.Export; import com.sun.btrace.annotations.Kind; import com.sun.btrace.annotations.Location; import com.sun.btrace.annotations.OnMethod; import com.sun.btrace.annotations.OnTimer; import com.sun.btrace.annotations.Return; import com.sun.btrace.annotations.Self; import com.sun.btrace.annotations.TLS; @BTrace public class BTraceConnection{ @TLS private static long startTime = 0; @Export public static long openedCount; @Export public static long closedCount; @Export public static long i; @OnMethod( clazz="/.*InternalManagedConnectionPool/", method="getConnection", location=@Location(Kind.RETURN) ) public static void m(@Return Object obj) { startTime = timeMillis(); openedCount++; println("++++++++++++++++++++++++++++++++One connection is opened!++++++++++++++++++++++++++"); println(obj); Threads.jstack(); } @OnMethod(clazz="/.*InternalManagedConnectionPool/", method="returnConnection") public static void d(@Self Object obj) { closedCount++; println("======================One connection is closed!========================"); println(obj); Threads.jstack(); } @OnTimer(10000) public static void ontime() { println("Total opened connection:"); println(openedCount); println("Total closed connection:"); println(closedCount); } }
思路2:抓取oracle数据库耗费资源的sql语句和 查询Oracle每天执行慢的SQL排查问题
抓取oracle数据库耗费资源的sql语句:
1.http://wukui127.blog.51cto.com/2866802/963370/
Oracle 查询每天执行慢的SQL:
http://blog.itpub.net/28602568/viewspace-1364844/
http://kamiff.iteye.com/blog/725343
参考:
http://www.dbafree.net/?p=378
http://docs.jboss.org/jbossas/javadoc/4.0.2/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java.html
发表评论
-
shiro落地的设计复杂度(最后总结)
2018-06-19 17:22 548经过1周的源码研究,终于对shiro的原理有了深刻的理解,基于 ... -
shiro login成功后保存了哪些数据
2018-06-19 17:05 1428shiro login成功后 保存了Principals 和 ... -
shiro 会话原理分析
2018-06-19 12:40 15611、从哪里获取sessionid每次请求都会尝试获取ses ... -
shiro内部原理分析
2018-06-15 17:07 2358一句话总结:会话域Context一路收集principal ... -
Zookeeper入门-001 源码环境搭建
2018-03-15 11:47 8801.到github下载源码:https://github.c ... -
dubbo服务治理之路由规则研究
2018-01-31 15:50 21861.今天没太多事情,挤 ... -
shiro SecurityUtils.getSubject()深度分析
2018-01-12 17:38 488531.总的来说,SecurityUtils.getSubject ... -
@Async核心实现1 --------AsyncExecutionAspectSupport
2017-12-27 10:34 1950基本原理: 通过spring的扩展接口AbstractBea ... -
从零开始玩转JMX(1):简介和 Standard MBean
2017-08-23 15:20 0http://www.importnew.com/22299. ... -
java基础回顾
2017-08-15 11:21 0http://www.cnblogs.com/skywang1 ... -
mybatis-generator-maven-plugin 插件扩展 增加自定义方法
2017-08-10 16:50 0https://my.oschina.net/alexgaoy ... -
解决了DeferredResult请求长时间占用数据库连接的问题
2017-08-04 09:55 2325最近看了看开源项目appllo配置中心的源码,发现一个很有意思 ... -
httpclient发送webservice
2017-05-03 23:25 0http://aperise.iteye.com/blog/2 ... -
与大师面对面交流:Chris Richardson 来华布道微服务架构
2016-11-28 21:28 780http://www.daocloud.io/microser ... -
eclipse反编译
2016-11-23 20:48 0http://jingyan.baidu.com/articl ... -
spring security
2016-09-12 19:28 0http://www.importnew.com/5641.h ... -
浅析JPA中EntityManager无法remove entity的问题
2016-07-18 21:50 0http://rickqin.blog.51cto.com/1 ... -
Permission Denied(publickey) 解决
2016-07-14 19:18 27421.生成公钥和私钥放到C:\Users\itservice\. ... -
权限管理系统
2016-04-18 13:29 0http://git.oschina.net/ketayao/ ... -
Java工程师成神之路--面试必须复习的基础
2015-12-28 17:20 0http://www.open-open.com/news/v ...
相关推荐
19.1.2 使用配置文件指定的数据库连接池 19.1.3 从容器中获得数据源 19.1.4 由Java应用本身提供数据库连接 19.2 配置事务类型 19.3 把SessionFactory与JNDI绑定 19.4 配置日志 19.5 使用XML格式的配置...
19.1.2 使用配置文件指定的数据库连接池 19.1.3 从容器中获得数据源 19.1.4 由Java应用本身提供数据库连接 19.2 配置事务类型 19.3 把SessionFactory与JNDI绑定 19.4 配置日志 19.5 使用XML格式的配置...
19.1.2 使用配置文件指定的数据库连接池 19.1.3 从容器中获得数据源 19.1.4 由Java应用本身提供数据库连接 19.2 配置事务类型 19.3 把SessionFactory与JNDI绑定 19.4 配置日志 19.5 使用XML格式的配置...
19.1.2 使用配置文件指定的数据库连接池 19.1.3 从容器中获得数据源 19.1.4 由Java应用本身提供数据库连接 19.2 配置事务类型 19.3 把SessionFactory与JNDI绑定 19.4 配置日志 19.5 使用XML格式的配置...
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java....
图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...
连接池 串行化技术 影子Master架构 批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层架构设计 缓存优化 DAO&ORM; 双主架构 主从同步 读写分离 性能优化架构能力 代码级别...
答:JDBC数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问。 什么情况下不建议使用Hibernate? 答:当数据量大,并且表关系复杂的时候不建议使用。 sleep()和wait()有什么区别? ...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得...
2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得...
2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...
2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang....
2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...
首先,必须定义一个能够从连接池中抽取出本地数据库JDBC对象(如OracleConnection,OracleResultSet等)的抽取器:nativeJdbcExtractor,这样才可以执行一些特定数据库的操作。对于那些仅封装了Connection而未包括...
使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息...