在我们web项目中,我们常见的web应用服务器有Tomcat、Weblogic、WebSphere。它们是互联网应用系统的基础架构软件,也叫“中间件”,负责处理动态在页面请求,并为应用提供了名字、事务、安全、消息、数据访问等,此外,它们还是提供应该构建的开发、部署、运行及管理功能。

当我们对项目做性能测试时,我们如何更好地监控它们,并诊断出性能问题呢?下以是我对Tomcat和Weblogic的一些性能监控分析方法:

1、  Tomcat性能监控分析

Tomcat是一个免费的开放源代码的web应用服务器软件,主要用来支持运行Java Servlet/JSP。Tomcat运行时占用的系统资源小,扩展性好,支持负载平衡和邮件服务等开发应用系统常用的功能,而且它还不断的改进和完善中,使用Tomcat作为web应用服务器,在系统应用性能上有很大帮助,以下介绍几种监控Tomcat性能的方法:

1)  Tomcat自带的监控功能

使用过Tomcat的人大概都知道,它附带了一个监控页面,先修改配置文件/conf目录下的tomcat-users.xml文件,为监控的用户添加权限,并且需要添加一个名为“manager-gui”的角色,如下:

 <role rolename="manager-gui"/>

 <user username="monitor" password="123456" roles="manager-gui"/>
  

保存后,访问http://localhost:8088/manager/status,如图,可查看Tomcat性能情况

2)  用LambdaProbe监控Tomcat

网上下载probe压缩文件,http://www.lambdaprobe.org/ 解压后,可以看到有个probe.war文件,接着需要修改两个文件

a、修改tomcat下conf/ tomcat-users.xml文件,添加如下代码:

 <role rolename="manager"/>
<role rolename="poweruser"/>
<role rolename="poweruserplus"/>
<role rolename="probeuser"/>
<user username="probe" password="123456" roles="manager,probeuser,poweruser,poweruserplus"/>

b、修改tomcat下bin/Catalina.bat文件,添加如下代码:

set CATALINA_OPTS=-Xms512m -Xmx1024m -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
 

启动tomcat后,访问http://localhost:8088, 输入用户名:probe,密码123456,登录后,

在页面中“WAR file to deploy”点击“浏览”将probe.war文件发布到tomcat应用中

访问http://localhost:8088/probe/,查看tomcat实时运行的应用程序的性能,如图

3)  LoadRunner编写脚本实现Tomcat性能监控

LR不支持直接监控Tomcat,但是可以在VUGen中编写脚本来获取性能数据,其实是编写大量的关联函数web_reg_sava_param()及lr_user_data_point函数,例如:

 double atof(const char *string);

 extern char * strtok(char * token, const char * delimiter);

 collectMetrics(){

 int countP, counts,  countF, countF, countR, countK;

 int numValues;

 static int loggedVersionInfo = FALSE;

 lr_save_string(“127.0.0.1”,”ServerName”);

 web_set max_html_param_len();

 web_set_user(“admin”,”admin”,”{ServerName}”);

 lr_start_transaction(“monitor tomcat”);

 web_reg_save_param(“JVMFreeMemory”,”LR=Free memory”,”RB=MB”,”Ord=”,LAST);

 略……………这里添加多个监控指标

 Lr_end_transaction(“monitor tomcat”,LR_AUTO);

 写入Tomcat JVM度量数据

 Lr_user_data_point(“Tomcat JVM Free memory”,atof(lr_eval_string(“{JVMFreeMemory}”)));

 }
  

然后在Run-time中设置数据收集的间隔“pacing”,最好设置在5-10s,最后在Controller中设置脚本运行,场景运行完毕后,在Analysis分析结果图标中添加“User Defined Data Points”,查看收集到的Tomcat性能数据。

4)  JMX监控Tomcat

使用JMX监控Tomcat,需要编写JMX提供接口的实现类,该接口是任何java程序都可以调用访问的,编写java程序来收集Tomcat性能数据,在此就略过啦!

5)  优化JVM提高Tomcat性能

a、  修改Tomcat启动/最大时的运行内存来监控性能指标的影响,即修改bin/Catalina.bat文件;

JAVA_OPTS=-Xms512m -Xmx1024m

b、  修改conf目录下server.xml文件maxThreads的值来调整Tomcat的最大连接线程数;

c、  同上,修改connectionTimeout的值来调整连接超时数;

d、  同上,修改acceptCount的值来调整最大排队数;

2、  Weblogic中间件监控性能分析

a、  在weblogic控制台页面调整Session策略;

b、  JDBC连接数监控及参数的调整,如Initial Capacity、Maximum Capcity等;

c、  JVM监控分析,可设置JVM启动时的参数;

如何对应用服务性能问题诊断(Tomcat、Weblogic中间件)的更多相关文章

  1. docker 实战---部署tomcat\weblogic集群 (二)

    安装tomcat镜像 准备好须要的jdk tomcat等软件放到home文件夹以下 启动一个虚拟机 docker run -t -i -v /home:/opt/data  --name mk_tom ...

  2. Docker创建 tomcat/weblogic 集群

    安装 tomcat 镜像 准备好需要的 jdk.tomcat 等软件放到 home 目录下面,启动一个容器 docker run -t -i -v /home:/opt/data --name mk_ ...

  3. c++标准之于gcc/vc/boost等实现相当于jsr规范之于sunjdk/ibmjdk/tomcat/weblogic等实现

    春节放假期间,一直在学习c++,越想越发现c++标准之于gcc/vc/boost等实现相当于jsr规范之于sunjdk/ibmjdk/tomcat/weblogic等实现

  4. jstack来分析linux服务器上Java应用服务性能异常

    使用jdk自带的jstack来分析linux服务器上应用服务性能异常: 1.top查找出哪个进程消耗的系统资源情况 [op1@jira ~]$ top top - 19:23:43 up 22 day ...

  5. 安装weblogic中间件_test

    小编对他还不是很了解,等了解的时候小编吧这句话删除(注意) 如果过程中有问题的话请联系 QQ:291562721 weblogic是ORACLE商家,他是一门中间件服务: 因为一些安全的原因,扫描发现 ...

  6. 性能监控 -- 中间件性能监控【Weblogic控制台】

    通过WebLogic管理控制台可以实时获取各性能指标,通过控制台,可以对weblogic的性能及运行状况,发布的应用.资源等进行监视 1. 进入Weblogic管理控制台,单击服务器,选择一台需监控的 ...

  7. Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能-转自阿里中间件

    引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...

  8. java-JProfiler(二)-进行本地JVM的性能监控-tomcat

    监视本地的Tomcat, 看似是本地,其实JProfiler GUI在一个单独的JVM里启动,他与被监视的目标jvm之间通过socket通讯,目的为了不干扰目标JVM.所以监视本地Tomcat与监视远 ...

  9. 一次WebSphere性能问题诊断过程

    一次接到用户电话,说某个应用在并发量稍大的情况下就会出现响应时间陡然增大,同时管理控制台的响应时间也很慢,几乎无法进行正常工作. 赶到现场后,查看平台版本为Webshpere6.0.2.29,操作系统 ...

随机推荐

  1. Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

    触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...

  2. SqlBulkCopy类进行大数据(一万条以上)插入测试

    好多天没写博客了,刚刚毕业一个多月! 关于上一篇博客中提到的,在进行批量数据插入数据库的时候可以通过给存储过程传递一个类型为Table的参数进行相关操作,在这个过程中本人没有进行效率的测试.后来查找发 ...

  3. Vim知识点收集

    (注意: 只记录工作中实际使用的命令) 删除带有pattern的所有行    :g/pattern/d 删除不带pattern的所有行   :g!/pattern/d 匹配red和blue,无次序   ...

  4. Cisco cmd 命令(二)

    1.配置路由器静态路由选择表 ip route [destination_network] [mask] [next_hop_address or exitinterface] [administra ...

  5. tableView特色用法

    // //  ViewController.m //  UITableView // //  Created by yhj on 15/12/15. //  Copyright © 2015年 QQ: ...

  6. UIView的常用方法

    bringSubviewToFront: 把指定的子视图移动到顶层 - (void)bringSubviewToFront:(UIView *)view 参数 view 需要移到顶层的视图 conve ...

  7. UIImage加载图片的区别和渲染模式

    前言 关于本地图片UIImage的加载问题,还是需要注意的.不同的加载处理方式,在效率和性能上还是有差异的. 今天,我们来讲讲UIImage的加载应该选择什么样的API来加载! 两种API 这两种AP ...

  8. JavaScript权威指南阅读笔记3

    第六章 对象 1.首先是先介绍了对象直接量的格式:对象直接量就是1.由若干个名/值对组成的映射表,2名/值对中间由冒号分割,3名值对之间由逗号分割,4整个映射表由花括号括起来.这样就组成了一个对象直接 ...

  9. 使用jekyll和prose在github上创建博客

    利用github的pages服务可以很方便地显示和管理我们的静态页面,这样用来做博客是非常适合的. 1.首先你要有一个github的帐号 2.创建一个repo,名字叫username.github.i ...

  10. NET Core开发-获取所有注入(DI)服务

    NET Core开发-获取所有注入(DI)服务 获取ASP.NET Core中所有注入(DI)服务,在ASP.NET Core中加入了Dependency Injection依赖注入. 我们在Cont ...