Websphere提供了一个TPTP(Test & Performance Tools Platform)工具,最新版本为4.5.0,可以进行强大的性能测试和分析工具,利用它,我们可以分析java代码的内存泄露分析、查找性能瓶颈、以及定位线程死锁等。

一、准备工作

1、下载TPTP工具

Websphere提供了一个TPTP Eclipse插件,可以到下面的网站进行下载。

http://www.eclipse.org/tptp/home/downloads/

为了简便起见,建议直接下载TPTP all-in-one package,这是一个含有TPTP插件的3.4版本的Eclipse,下载后直接解压后,运行该目录下的eclipse.exe就可以直接运行。 

2、下载示例项目

为了学习插件的功能,建议下载示例项目,在该网站中,找到"TPTP Project Examples",点击"Runtime"下载示例项目。下载后解压后,分别将几个项目导入到带有TPTP插件的Eclipse的工作空间中。 

3、下载Agent Controller

Agent Controller用于监控外部的Java应用,如监控Websphere Application Server。
在下载页面找到Agent Controller,在Runtime  选择Windows IA32(windows平台的32位操作系统),按"download"按钮即可下载。
下载后,将其解压到一个,如 d:\agentcontrol 

二、进行Java程序的性能分析和监测。

下面具体来通过案例学习如何使用TPTP工具。

1、进行内存泄露分析

以Profile方式运行Memory Leak项目的MemoryLeak类。

首先选择Window -> Open Perspective -> Profiling and Logging, 打开Profiling透视图。选择Run -> Profile configurations (也可以点击  图标进行选择),打开Profile设置对话框,选择External Java Application,按  按钮,增加了一项新的配置New_configuration,在main  Tab页选择Memory Leak 项目中的类MemoryLeak class文件,选择Memory Leak项目,找到MemoryLeak类并选择,如下图所示。

再按"Monitor"Tab页,选择"Java Profiling--Memory Analysis",如下图所示,再按"Profile"按钮,运行应用并进行监控。 

该应用运行了一个Applet窗口,如下图:

Profile的透视图如下图所示,不断按Leak some memory或Allocate some memory按钮,可以不断增加内存中集合的Sting实例和new String实例,双击左侧视图MemoryLeak at fox,右侧实体显示内存分析结果,按Profiling视图的  图标,手动刷新页面,可以看到有上、下小箭头,预示着活动的内存实例数(Live Instance)和总内存实例数(Total Instance)的增加和减少(垃圾收集造成),以及各个类占用的字节数。按Object Allocations视图的%后的三角形图标,可以看到增加量和减少量的变动值,如下图所示。 



2、执行时间分析:用来分析程序的执行时间,分析性能瓶颈。

以Profile方式运行MemoryLeak类,步骤同上,在Monitor Tab页面选择"Java Profiling---Execution Time Analysis",按"Profile"按钮,弹出运行的页面。
双击左侧视图中MemoryLeak at fox的Execution Time Analysis,显示执行分析页面,如下图所示:

 
点击Call Tree Tab页面,看以看到调用关系,并可视化显示出调用的时间长短,如下图所示。

 
点击左侧的配置资源项的鼠标右键菜单,选择"Open With---Execution Flow",可以显示图形化的调用时间关系,用鼠标选中一个区域,可以将其放大,如下图所示:

 
可以看出,这是一个很好的性能分析工具,另外还具有生成类似UML的类交互图和线程交互图的功能。

3、线程分析:可以分析出死锁和运行的历史状况。

以Profiling方式运行ThreadsDeadlock项目中的Deadlock类,Monitor选择Thread Analysis,进行Profiling监控。双击击左侧视图的DeadLock At fox,显示线程的状态,如下图所示:


 
可以看出,图中直接标明了哪些线程正在运行,哪些线程在等待、哪些线程停止、哪些线程发生了死锁。

更强大的功能还在后面,点击Threads Visualizer Tab页,可以看出线程在时间执行序列上的状态变化情况,如下图所示: 

时间轴从左到右,单位为 秒:毫秒,各种演示代表不同的状态:

  • 绿色为运行状态
  • 红色为死锁状态
  • 黑色为停止状态
  • 橙色为等待状态

图中显示了各个线程在不同时间段的状态变化。 

三、对WebSphere 应用服务器进行监控

TFTP不仅可以对Java程序进行监控,还可以对外部的应用服务器进行监控,如WebSphere应用服务器。

1、  设置环境变量

为了监控Websphere,需要先增加新的环境变量,直接编辑websphere的server.xml文件,笔者的配置文件如下:
D:\JavaEEServer\IBM\Websphere6.1\profiles\AppSrv03\config\cells\foxNode02Cell\nodes\foxNode03\servers\server1\server.xml
修改配置文件的jvmEntries选项的属性genericJvmArguments,如:
genericJvmArguments="-Xquickstart -XrunpiAgent"

2、  将d:\agentcontroll\bin目录下的dll文件copy到jdk的bin目录中

笔者的jdk\bin目录为
D:\JavaEEServer\IBM\Websphere6.1\java\bin (按照AgentController的readme,只设置环境变量是不能运行的,查了Sun的资料,发现可以将dll文件copy到bin目录下,这样就可以执行了)。

3、  启动Websphere。

这样,websphere上就运行了一个外部的Agent代理。

4、使用Eclipse连接Agent。

选择Run---Profile configurations,打开Profile设置对话框,选择Attach to Agent,按"+"按钮,增加一项配置,Host缺省为localhost[10002],因为是本机所以不用修改,如果要连远程集群,需要修改IP地址。点击Agent Tab页,选中Java Profiling中的三项,按"Profile"按钮进行监控。如下图所示。监控结果可以显示出内存分析、执行时间执行方法覆盖情况等信息,如下图所示。 


 
监控结果可以显示出内存分析、执行时间执行方法覆盖情况等信息,如下图所示。

  • 性能分析
  • web服务器
  • 9月
  • 三星

使用Websphere的TPTP工具进行性能分析和监控相关推荐

  1. Google插件Performance工具进行性能分析

    环境准备 [匿名模式]:匿名模式可以保证Chrome在一个相对干净的环境下运行.我们安装了许多chrome插件,这些插件可能会影响我们分析性能表现.使用ctrl+shift+N即可在匿名模式下开启新的 ...

  2. hadoop中使用hprof工具进行性能分析

    在编写完成MapReduce程序之后,调优就成为了一个大问题.如何使用现有工具快速地分析出任务的性能? 对于本地的java应用程序,进行分析可能稍微简单,但是hadoop是一个分布式框架,MapRed ...

  3. Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析

    android-ndk-profiler需要使用gcc进行编译,从NDK r13b 起NDK使用的默认编译器从gcc换成了clang,官方提供了Simpleperf工具进行性能分析,具体情况可以参考h ...

  4. linux c++ 函数效率,Linux C++程序进行性能分析工具gprof使用入门

    性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是 ...

  5. 使用IBM Rational Application Developer对Java应用程序进行性能分析

    总览 在处理能力和存储技术方面,技术的不断进步带来了许多新的有趣的技术. 这些技术以纯粹的应用程序性能为代价来解决诸如程序员效率或系统灵活性之类的次要问题. 其中包括诸如Java™之类的垃圾收集即时编 ...

  6. Android 应用进行性能分析/APP/系统性能分析

    如何对 Android 应用进行性能分析 记录一下自己在使用DDMS的过程:开启AS,打开并运行项目  找到TOOL/选择Android Device Monitor 一款 App 流畅与否安装在自己 ...

  7. 深入理解 Java 虚拟机-如何利用 VisualVM 对高并发项目进行性能分析

    来自:好好学java 前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择Visua ...

  8. 【Java VisualVM】使用 VisualVM 进行性能分析及调优

    转载:https://blog.csdn.net/lmb55/article/details/79267277 一.概述 开发大型 Java 应用程序的过程中难免遇到内存泄露.性能瓶颈等问题,比如文件 ...

  9. 使用 VisualVM 进行性能分析及调优

    2019独角兽企业重金招聘Python工程师标准>>> 概述 开发大型 Java 应用程序的过程中难免遇到内存泄露.性能瓶颈等问题,比如文件.网络.数据库的连接未释放,未优化的算法等 ...

最新文章

  1. 简单分析beyond作曲
  2. mysql server uuids_slave have equal MySQL Server UUIDs原因及解决
  3. System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
  4. Lotus中关于字符串处理的函数汇总
  5. 设计师网站大全视野导航,灵感、素材统统搞定
  6. python实现面试程序
  7. JSLite 的目标:缩小体积,做到 jQuery-free
  8. Linux内核部件分析 设备驱动模型之device
  9. 高等数学张宇18讲 第十二讲 常微分方程
  10. anvyiew java版_细说Anyview阅读器背后的故事
  11. [分类] Jzoj P1320 拯救奶牛
  12. 注意力机制在NLP问题中的介绍与调查-论文翻译
  13. CodeForces 964A Splits
  14. 自然语言16_Chunking with NLTK
  15. JFinal+Quartz动态任务调度控制台
  16. Oulipo---KMP
  17. 万字拿下leetcode线性数据结构
  18. 在VS Code中t把分支写的代码合并到master中并提交到远程仓库github上
  19. Graphql中我们应该用什么姿势来实现Resolver?
  20. 「电子数据交换EDI」OFTP-OFTP2协议

热门文章

  1. 安视宝动态微表情人脸识别技术
  2. 划词翻译—多种翻译平台集合体积不足1mb——QTranslate
  3. Python 模块简介 -- warnings
  4. 青龙-聚看点(稳定的毛)
  5. 顺序内聚和过程内聚的区别
  6. 显示“Hello World”并转换为语音
  7. 《人生的智慧》-叔本华著[韦启昌-(译)]
  8. 树莓派连接HC-SR501人体红外感应模块和蜂鸣器模块
  9. rz安装 xshell_Linux与windows之间文件传输工具RZSZ安装(Xshell或CRT)
  10. Echarts X轴内容过长自动隐藏,鼠标移动上去显示全部