`
fyjava
  • 浏览: 61774 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Apusic Studio监控SQL执行情况

阅读更多

<!----><!----><!----> <!---->

前言

技术支持工作过程中,我们通常碰到这样两种情况:第一,访问业务数据慢,但又不知慢在何处;第二,写入的业务数据出错,但又不知为何出错。其实, Apusic Admin Console 工具中,包含了数据源连接监控和数据源事件跟踪两大功能,特别是后者,能够有效帮助我们去分析解决以上两种问题。本文将简要介绍如何使用 Admin Console 中的这两大功能。

 


<!---->1        <!---->数据源连接监控

<!---->1.1    <!---->添加 Apusic 应用服务器

数据源连接监控需要在 Apusic Admin Console 中添加 Apusic 应用服务器。下面描述 Step by Step 的添加过程。

1 )切换到“ Apusic 管理”透视图。

<!----><!----> <!---->

2 )在“ Apusic 服务器列表”视图中,点击鼠标右键,点击“增加服务器”。

<!----><!----> <!---->

3 )在弹出窗体,选择“ Apusic 应用服务器”。

<!----><!----> <!---->

4 )然后,选择“远程服务器”,输入主机、端口、用户、密码等信息,点击“ finish ”按钮完成。

<!----><!----> <!---->

<!---->1.2    <!---->启动 Apusic 应用服务器

一般情况下,启动 Apusic 应用服务器这个步骤不是必须的,因这个时候 Apusic 应用服务器可能已经正在运行了。如在测试或者调试环境,需要确认 Apusic 应用服务器已经启动。

<!---->1.3    <!---->连接 Apusic 应用服务器

在“ Apusic 服务器列表”视图中,点中刚添加的 Apusic ,点击鼠标右键,在弹出菜单中,点击“连接”。

<!----><!----> <!---->

然后再弹出窗体,输入用户、密码,点击“ ok ”按钮。

<!----><!----> <!---->

如有防火墙,请允许 eclipse 的连接。

<!----><!----> <!---->

<!----><!----> <!---->

<!---->1.4    <!---->使用数据源连接监控

连接上 Apusic 后,在 Apusic Admin Console 中,选择“数据源连接监控”透视图。

<!----><!----> <!---->

在“数据源连接监控”视图,双击所要监控的 Apusic 下的数据源。

<!----><!----> <!---->

在该数据源的视图中,我们就可以查看详细的连接使用的统计情况,包括创建数、关闭数、空闲连接数、总连接数、等待线程数等。

<!----><!----> <!---->

需要注意以下几点:

<!---->(1)    <!---->如等待线程数不为 0 ,则表示数据库连接池可能设置得不够大

<!---->(2)    <!---->如创建数明显大于关闭数,超出合理的水平,则表现可能存在连接泄漏

<!---->(3)    <!---->等待时间或使用时间峰值过大,表明可能存在数据库访问方面的瓶颈

除了统计数据外,还可以查看活动连接 / 非活动连接的调用栈。那些活动时间过长的连接,特别需要加于留意。

 


<!---->2        <!---->数据源事件跟踪

<!---->2.1    <!---->配置数据源事件跟踪

连接上 Apusic 后,在 Apusic Admin Console 中,选择“数据源事件跟踪”透视图。

<!----><!----> <!---->

选择菜单中的“文件” -> New -> “跟踪”。

<!----><!----> <!---->

在“新建跟踪”窗体,输入跟踪名,选择服务器,并选中需要跟踪的数据源,点“ Next ”按钮。

 

<!----><!----> <!---->

下一步需要将跟踪到的事件信息暂存到数据库中。添加 URL 、驱动类名、驱动类路径、表名等信息,点击“ Next ”按钮。

<!----><!----> <!---->

下一步比较关键,我们可以选定跟踪的事件类型,包括 SQL 的语句执行、连接获取、设置自动提交、连接提交、连接回滚、连接关闭等事件,以及事务的开始、完成事件。

<!----><!----> <!---->

我们也可以选择感兴趣的数据列进行查看,最后,点击“ Finish ”按钮,完成。。

<!----><!----> <!---->

数据源事件跟踪将自动启动,在数据源跟踪视图中,将可以看到 SQL 语句,执行时间,堆栈等非常重要的信息了。

<!----><!----> <!---->

 

<!---->2.2    <!---->实战数据源事件跟踪

某客户应用,数据库为 SQL Server ,反馈访问缓慢。通过数据源事件跟踪,定位到问题。为了便于阅读,剥离应用场景,演示代码如下:

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="javax.naming.*"%>

<%

Context ctx = null;

DataSource ds = null;

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

String jndi = "cyDataSource";

String sql_insert = "insert into test(id,name,code) values(1,'1','1')";

String sql_update = "update test set name='2'";

String sql_query = "select * from test";

try {

ctx = new InitialContext();

ds = (DataSource)ctx.lookup(jndi);

conn = ds.getConnection();

 

conn.setAutoCommit(false);

stmt = conn.createStatement();

stmt.executeUpdate(sql_insert);

stmt.close();

 

conn.setAutoCommit(true);

stmt = conn.createStatement();

stmt.executeUpdate(sql_update);

 

stmt = conn.createStatement();

rs = stmt.executeQuery(sql_query);

while(rs.next()) {

       System.out.println("id:" + rs.getObject(1) + " |name:" + rs.getObject(2) + " |code:" + rs.getObject(3));

       out.println("id:" + rs.getObject(1) + " |name:" + rs.getObject(2) + " |code:" + rs.getObject(3));

}

} catch (Exception e) {

e.printStackTrace();

} finally{

}

%>

代码很简单,大意是对某个表进行插入操作后,因连接被传来传去,中间处理比较混乱,事务并未提交,这时同一连接又去访问该表进行更新操作。

我们依照上节的介绍,依样画瓢,开始数据源事件跟踪。然后,当访问演示页面时,发现页面半天不动,后台也没啥动静, JVM 也很正常,究竟发生什么事?代码执行到何处被阻塞了?

看起来好像很难,不过,这时候或者就是数据源事件跟踪工具发挥作用的时候了。通过观察数据源事件跟踪工具的输出,我们发现,连接在执行完第二次 setAutoCommit 后,未能继续执行后续的 Update 语句,显然,该语句涉及的表给锁住了。例子很简单,大家感兴趣的话可以动手做做。或者爱动手的你,把 SQL Server 换成 Oracle ,结果又会是如何呢?

 

分享到:
评论

相关推荐

    使用Jprofiler监控Apusic应用服务器.pdf

    ### 使用JProfiler监控Apusic应用服务器:深度解析与实践指南 #### 引言与背景 在IT运维与软件开发领域,性能监控与优化是确保应用高效稳定运行的关键环节。Apusic应用服务器作为企业级Java应用的承载平台,其性能...

    Apusic SQLServer的调优记录

    在应对并发压力大、遭受网络攻击以及数据库压力大的情况下,对HP-UX + JDK + Apusic + SQL Server环境进行调优至关重要。在这种环境中,系统需要处理3000至8000并发连接,未来可能高达20,000人同时在线,同时还要...

    apusic数据库连接攻略

    在apusic文件中,执行SQL语句是指在应用程序中执行SQL语句。例如,在上面的示例代码中,执行SQL语句是指使用PreparedStatement对象执行select语句。 apusic数据库连接攻略是apusic文件中的一种数据库连接策略,通过...

    金蝶Apusic用户手册(一)

    金蝶Apusic企业服务总线V7.0用户手册

    Apusic服务器解决数据源的资源引用

    通过本文的介绍,我们可以看到在Apusic服务器中使用数据源资源引用不仅能够提高程序的可读性和可维护性,还能更好地利用服务器提供的高级特性。理解并掌握这一过程对于开发高性能的企业级Java应用至关重要。

    Apusic应用服务器6.0使用手册(CHM格式)

    金蝶Apusic应用服务器6.0是一款标准、安全、高效、集成并且具有丰富功能的企业级应用服务器(Enterprise Application Server),它用于实现基于SOA的企业应用...开始使用金蝶Apusic应用服务器6.0之前,请先阅读本文档。

    Linux环境下使用Apache搭建Apusic应用服务器集群

    3. **赋予目录权限**:使用`chmod -R 777 Apusic6.0/`命令赋予目录执行权限。 4. **配置JAVA_HOME**:编辑`/Apusic6.0/bin/setenv`文件,将`JAVA_HOME`变量设置为JDK的安装路径。 5. **启动AAS**:在`/Apusic6.0/bin...

    金蝶Apusic V10 应用服务器用户管理手册

    Apusic V10版本进一步优化了这些特性,旨在帮助用户更便捷地管理和使用应用服务器。 I. 快速开始指南 在这一部分,用户可以找到关于如何快速上手Apusic应用服务器的信息。指南从基础介绍开始,包括产品的核心功能和...

    Apusic密码修改指引

    3. **登录Apusic控制台检查部署的应用,除EAS、EASWeb、fileserver、jportal等已知应用外,是否有其他未知应用部署。** **注意事项:** - 对于发现的可疑文件或应用,应及时进行隔离或删除,并进一步调查来源。 ##...

    金蝶中间件Apusic-plugins.zip

    - **性能监控**:通过插件可以实时监控应用程序的性能指标,如CPU使用率、内存消耗等,有助于优化代码性能。 - **日志查看**:查看应用运行时的日志信息,快速定位和解决问题。 - **热部署**:支持代码修改后自动...

    EAS apusic5.0 许可

    描述中提到“许可到期时间2088年”,这是一个非常长期的授权,意味着用户可以在相当长的时间内无顾虑地使用Apusic5.0进行业务运营,无需担心因许可问题而中断服务。 Apusic5.0的核心功能可能包括但不限于以下几点:...

    Windows2003+Apusic6.0安装部署手册

    Windows2003+Apusic6.0安装部署手册 本手册旨在指导用户在 Windows 2003 操作系统上安装和部署 Apusic 6.0,旨在帮助用户快速掌握安装和配置 Apusic 6.0 的步骤。 一、安装准备 在开始安装 Apusic 6.0 之前,需要...

    管理Apusic Web服务器

    管理 Apusic Web 服务器 Apusic Web 服务器是 Apusic 应用服务器中内置的一个高效、安全、可靠的 Web 服务器,提供完整的 Web 服务器的功能,使 Apusic 应用服务器在提供对静态页面和图形的同时,提供对 JSP、...

    Apusic5.1域配置

    如果需要删除已创建的域,同样在 `/opt/apusic-5.1/bin` 目录下执行 `sh config`,选择删除域(输入2),然后根据提示选择要删除的域,确认后会从 `/opt/apusic-5.1/domains` 中移除。 **3. 启动/停止服务** ...

    EAS Apusic2016年的临时许可

    安装或使用EAS Apusic时,正确配置和使用这个许可证文件是至关重要的,因为它决定了软件能否正常运行以及运行的合法期限。 总之,EAS Apusic 2016是一个功能强大的企业级应用服务器,它为企业提供了稳定、安全、...

    Apusic--license

    金蝶中间件(Apusic)--license

    apusic license2017测试许可到2088.docx

    - **权限问题**:确保在安装和使用测试许可的过程中拥有足够的权限,避免出现权限不足导致无法正确安装的情况。 - **兼容性问题**:检查软件版本是否与测试许可证兼容,以免出现不兼容导致的问题。 - **备份数据**:...

    金蝶中间件Apusic MyEclipse10.x、MyEclipse9.x和Eclipse all-plugins

    Apusic的Eclipse插件使开发者能够在标准的Eclipse环境中享受到与MyEclipse类似的支持,这对于那些习惯使用Eclipse但又需要Apusic中间件功能的开发者来说非常有价值。 使用这些插件,开发者可以: 1. 创建和管理...

    apache2.2+apusic6.0负载配置指南(中望)

    - 实施负载均衡后,需要监控服务器的性能和负载情况,根据需求动态调整配置,如负载因子、会话持久化策略等。 以上就是Apache2.2和Apusic6.0联合配置实现负载均衡的关键步骤和相关知识点,通过这样的配置,可以...

    Apusic_license

    Apusic 7.0,2014,license,

Global site tag (gtag.js) - Google Analytics