简介:

Lambda Probe(以前称为Tomcat Probe)是一款实时监控和管理的Apache Tomcat实例的基本工具。

Lambda Probe 是基于 Web + AJAX 的强大的免费开源工具,可以用来实时管理一个单独的host。LambdaProbe拥有几乎所有Tomcat Manager的功能,可以说是一个增强版本的 Tomcat Manager。除此之外,Tomcat Probe 还拥有很多让开发者和系统管理者更方便的性能。从而使得Tomcat对开发者和管理者更加透明。包括应用程序、数据源、发布、日志、线程、集群、系统信息、状态、连接器状态这些功能。如配合 JDK 1.5 甚至可以实时的画出 Server 的详细内存占用状态。

Probe在Tomcat中部署:

Probe版本:2.3.3

一、Tomcat没有默认用户账号,故首先需要添加Tomcat用户账号

修改$CATALINA_HOME/conf/tomcat-users.xml:

<tomcat-users>

<!-- 用户角色 -->

<role rolename="manager"/>

<!-- 用户账号 -->

<user username="admin" password="admin" roles="manager"/>

</tomcat-users>

如下图所示:

然后重启Tomcat

Window重启tomcat如下图所示:

Linux重启tomcat命令:service  tomcat7  restart

二、部署Probe应用

将probe.war扔到$CATALINA_HOME/webapps,如下图所示

下然后重启Tomcat

三、访问:

通过http://localhost:8080/probe/?lang=cn 访问汉化的工程,因为默认是英文的,如下图所示:

注:

最好是把国际化图标也配置到主页下面,工程布局使用的是sitemesh-2.4,修改probe\WEB-INF\jsp\decorators下的probe.jsp来实现

在最下面增加

<a href="?<probe:addQueryParam param='lang' value='cn'/>"><img src="<c:url value='/flags/cn.gif'/>" alt="BR" /></a>

然后可以通过页面下面的国旗图标进行语言切换。

Probe监测介绍:

一、应用程序界面

该界面主要显示tomcat服务器下所有已安装的程序,如下图所示:

点击该页面的“Application statistics ”跳转到应用统计界面,如下图所示:

在此界面可以查看所有应用总的累计请求和平均响应时间,以及按应用统计的请求、平均响应时间。

点击应用程序界面下指定应用程序,跳转到该程序的详细统计界面,如下图所示:

在此界面可以通过右侧应用程序目录进行“摘要”、“会话”等进行切换查看。

二、     系统信息界面

切换到“系统信息”界面,查看内存使用情况,如下图所示:

在此界面点击右侧“内存使用”可查看详细的当前内存使用率和内存使用率历史情况,如下图所示:

注:JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释(该部分来自网络)

jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。

HotSpot虚拟机GC算法采用分代收集算法:

1、一个人(对象)出来(new 出来)后会在Eden Space(伊甸园)无忧无虑的生活,直到GC到来打破了他们平静的生活。GC会逐一问清楚每个对象的情况,有没有钱(此对象的引用)啊,因为GC想赚钱 呀,有钱的才可以敲诈嘛。然后富人就会进入Survivor Space(幸存者区),穷人的就直接kill掉。

2、并不是进入Survivor Space(幸存者区)后就保证人身是安全的,但至少可以活段时间。GC会定期(可以自定义)会对这些人进行敲诈,亿万富翁每次都给钱,GC很满意,就让 其进入了Genured Gen(养老区)。万元户经不住几次敲诈就没钱了,GC看没有啥价值啦,就直接kill掉了。

3、进入到养老区的人基本就可以保证人身安全啦,但是亿万富豪有的也会挥霍成穷光蛋,只要钱没了,GC还是kill掉。

分区的目的:新生区由于对象产生的比较多并且大都是朝生夕灭的,所以直接采用标记-清理算法。而养老区生命力很强,则采用复制算法,针对不同情况使用不同算法。

非heap区域中Perm Gen中放着类、方法的定义,jvm Stack区域放着方法参数、局域变量等的引用,方法执行顺序按照栈的先入后出方式。

GC工作机制

SUN的jvm内存池被划分为以下几个部分:

Eden Space (heap)

内存最初从这个线程池分配给大部分对象。

Survivor Space (heap)

用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。

Tenured Generation (heap)

用于保持已经在survivor space内存池中存在了一段时间的对象。

Permanent Generation (non-heap)

保存虚拟机自己的静态(reflective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的。

Code Cache (non-heap)

HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)。

简单来讲,jvm的内存回收过程是这样的:

对象在Eden Space创建,当Eden Space满了的时候,gc就把所有在Eden Space中的对象扫描一次,把所有有效的对象复制到第一个Survivor Space,同时把无效的对象所占用的空间释放。当Eden Space再次变满了的时候,就启动移动程序把Eden Space中有效的对象复制到第二个Survivor Space,同时,也将第一个Survivor Space中的有效对象复制到第二个Survivor Space。如果填充到第二个Survivor Space中的有效对象被第一个Survivor Space或Eden Space中的对象引用,那么这些对象就是长期存在的,此时这些对象将被复制到Permanent Generation。

若垃圾收集器依据这种小幅度的调整收集不能腾出足够的空间,就会运行Full GC,此时jvm gc停止所有在堆中运行的线程并执行清除动作。

点击“OS信息”可查看OS与JVM对比使用情况,如下图所示:

注:在进行性能测试时,可以通过内存使用和OS信息判断是否出现内存溢出等问题

三、     Connectors界面

切换到“Connectors”界面,查看连接器信息,如下图所示:

连接器主要是接收用户的请求,然后封装请求传递给容器处理,tomcat中支持两种协议的连接器:HTTP/1.1与AJP/1.3,HTTP/1.1协议负责建立HTTP连接,web应用通过浏览器访问tomcat服务器用的就是这个连接器,默认监听的是8080端口;AJP/1.3协议负责和其他HTTP服务器建立连接,监听的是8009端口,比如tomcat和apache或者iis集成时需要用到这个连接器。协议上有三种不同的实现方式:JIO、APR、NIO。

因此在“Connectors”界面中可以分别查看"ajp-apr-8009"和"http-apr-8080"详细的连接情况,如下图所示:

"ajp-apr-8009":

"http-apr-8080":

注:点击单独图表可放大该图表

实战演示:

性能测试脚本录制

登录网站,地址:http://127.0.0.1:8080/webtest/login.jsp

登录成功跳转到欢迎界面,地址:http://127.0.0.1:8080/webtest/ActionServlet

注:该模板来自网络,本人仅做学习使用,未参与任何商业活动

录制的jmeter脚本如下:

本次测试只是验证一下Probe相关参数是否真实可靠,因此设置并发用户100,持续时间60s,如下图所示:

执行过程中在Probe界面的程序应用中,查看webtest程序相关信息,如下图所示:

可以看到会话数量为100,即100个用户在与服务器进行会话,如下图所示:

执行结束后可以对比一下请求数量与jmeter聚合报告中的数量是否一致,如下图所示:

Probe中webtest请求数量:

注:由于截图时已执行完测试,并且我又单独在网页有所操作,所有该请求数据量多余实际测试量

Jmeter聚合报告结果:

通过对比,Probe记录的请求量与jmeter基本一致。

在Probe界面点击右侧应用程序下的会话,查看相关会话情况,如下图所示:

查看会话个数是否与测试一致,IP是否为测试机对应IP,SER是否成功

然后我们查看一下内存使用情况,在Probe中跳转到系统信息界面,如下图所示:

在此界面主要关注PS Eden Space、PS Survivor Space和PS Old Gen即可,通过相关内存的变动判断是否出现性能瓶颈。

点击系统信息下的OS信息,可以查看JVM CPU等相关参数的历史图表,如下图所示:

通过此界面的信息也可以判断性能测试是否出现瓶颈问题或内存溢出问题。

Probe在性能测试中的使用方式简介的更多相关文章

  1. 在Windows 10中截取截图的6种方式 简介

    在Windows 10中截取截图的6种方式 简介 截图对于不同的目的很重要.它可以用于捕获笔记本电脑上的任何内容的截图.所以,如果你使用Windows 10,你可能不知道如何截图,因为它是比较新的.因 ...

  2. 性能测试中TPS和并发用户数

    并发用户数与TPS之间的关系 1.  背景 在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好:对TPS不是非常理解,也根本不知道它们之间的关系 ...

  3. OSG中的示例程序简介

    OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...

  4. BizTalk开发系列(三十七) 性能监视器在BizTalk性能测试中的使用

    BizTalk应用程序的性能测试和分析是一个非常重要的过程,因为BizTalk的应用程序在Run-time时受部署结构.消息请求数量和消息大小等 的影响很大,因此无论是简单还是复杂的的应用都需要在部署 ...

  5. OSG中的示例程序简介(转)

    OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera ...

  6. LoadRunner性能测试中Controller场景创建需注意的几点

    在LR工具做性能测试中,最关键的一步是Controller场景的设计,因为场景的设计与测试用例的设计相关联,而测试用例的执行,直接影响最终的测试结果是怎么的,因此,我们每设计一种场景,就有可能是一个测 ...

  7. 第63节:Java中的Spring MVC简介笔记

    前言 感谢! 承蒙关照~ Java中的Spring MVC简介笔记 MVC简介 Spring MVC 基本概念 Spring MVC 项目搭建 maven 使用Spring MVC进行开发 实现数据绑 ...

  8. IdentityServer4 中文文档 -1- (简介)背景

    IdentityServer4 中文文档 -1- (简介)背景 原文:http://docs.identityserver.io/en/release/intro/big_picture.html 目 ...

  9. IdentityServer4 中文文档 -2- (简介)相关术语

    IdentityServer4 中文文档 -2- (简介)相关术语 原文:http://docs.identityserver.io/en/release/intro/terminology.html ...

随机推荐

  1. java代理类及AOP

    1.代理架构图 2.AOP 3.动态代理概念 4.动态代理工作原理图

  2. Android RadioGroup和RadioButton详解

    实现RadioButton由两部分组成,也就是RadioButton和RadioGroup配合使用.RadioGroup是单选组合框,可以容纳多个RadioButton的容器.在没有RadioGrou ...

  3. [Sass]混合宏的参数

    [Sass]混合宏的参数--传一个不带值的参数 Sass 的混合宏有一个强大的功能,可以传参,那么在 Sass 中传参主要有以下几种情形: A) 传一个不带值的参数 在混合宏中,可以传一个不带任何值的 ...

  4. Oracle10g 表分区

    1.分区的原因 (1)Tables greater than 2GB should always be considered for partitioning. (2)Tables containin ...

  5. Eclipse 增加php插件

    Eclipse 下载解压后运行, Help ------> Install New Software,在 Work whit 输入http://download.eclipse.org/tool ...

  6. java.sql.SQLException: ORA-01000: 超出打开游标的最大数

    实际上,这个错误的原因,主要还是代码问题引起的.  ora-01000: maximum open cursors exceeded.  表示已经达到一个进程打开的最大游标数.  这样的错误很容易出现 ...

  7. Learn ES2015

    折腾了大半年的项目,用的angular折腾快疯了. 总算有个小结了.正好闲下来为新的项目做准备,学点新的玩意玩玩,以往ES6都没用过,感觉被大部队甩好远了,抓紧跟上大部队的脚步... 1.利用let和 ...

  8. [翻译]通过使用正确的search arguments来提高SQL Server数据库的性能

    原文地址:http://www.sqlpassion.at/archive/2014/04/08/improving-query-performance-by-using-correct-search ...

  9. 学习微信小程序之css10外边距

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. html 超文本标记语言

    1.html超文本标记语言 2.在html中存在着大量的标签,我们用html中存在的标签将要显示在网页的内容包含起来. 3.css 控制网页显示内容的效果. 4.html+css 只能是静态网页. 5 ...