WebSphere 应用服务器性能调优工具4


在图形化监控页面中,由于应用服务器和代理服务器以及随需应变路由器的性能参数不同,所以他们所显示的性能曲线也有所不同。应用服务器的性能曲线包括:Servlet Response Time, Transaction Response Time, EJB Response Time, Jdbc Response Time, Servlet Throughput, Transaction Throughput, EJB Throughput, Jdbc Throughput, Concurrency,WebContainer Thread Pool, Http Session, CPU usage Java Heap。代理服务器和随需应变路由器的性能曲线包括:Proxy Server Response Time, App Server Response Time, Proxy Server throughput, App Server throughput, Local Throughput, Active Connection, Catch Hit, Failed Request, CPU usage Java Heap

除去这些性能曲线外,在图形化监控页面中还有一个重要的诊断指标,那就是警告Alert)。服务器的这些性能指标在触发一定的规则之后,会发生警报,这些警报会显示在图形化监控页面的 Alert 部分。而其触发的规则是可以自定义编辑的,具体规则的编辑和设置我们将在后面的规则引擎章节中进行详细介绍。默认的警告类型根据服务器类型不同也不尽相同。应用服务器的性能曲线包括:Servlet, Transaction, EJB, ConnPool, JcalPool, RunTime, ThreadPool Session。代理服务器和随需应变路由器的性能曲线包括:RunTime, ThreadPool Pool。这些警告信息能帮助您迅速确定哪些性能指标已经到达我们设置的阀值,从而达到提前预警的目的。

13. 图形化监控页面—— Alert


第三层监控页面 ——详细数据页面

详细数据页面包含整个监控系统的性能数据信息,前面介绍的两层监控视图都是基于这些数据信息而产生的。在详细数据页面中,我们把这些数据信息进行了分类和聚类,使它们以更易读地角度展现在用户面前,为问题分析提供更丰富的数据支持。

我们可以通过视图模块下面的标签进入到每一个数据视图中,如下图所示,其中包括:Correlation, Statistic, Response Time, Throughput, Concurrency, Alert, Servlet, Transaction, Proxy, EJB, JdbcConnectionPool, JcaConnectionPool, Runtime, Session ThreadPool

14. 详细数据页面


您还可以通过点击图形化监控页面中曲线上的节点,直接进入对应时间节点的数据集中,这一功能可以让您方便的找到问题发生的时候的性能数据信息。

在详细数据页面中,大多数为表格结构,这些表格中以时间节点为顺序详细记录了各种性能指标的数据信息。如下图的 RunTime 数据。它记录了 RunTime 中的 CPU usage, MaxHeapSize, HeapSize UsedHeap 信息。

15. 详细数据页面——表格数据


有些页面中,数据条目具有展开项,意在显示应用中参与此条性能指标的全部模块。在这类型的数据中,我们使用不同颜色来表示不同的内容对整体性能指标的贡献度。这里以 EJB 性能信息为例,如下图所示,整个环境的 EJB 响应时间是 12.846ms
吞吐量为 0.217/s. 将此条目展开我们可以看到,应用中一共包含三个 EJB 模块,其中有一个为红色,表示它在整个性能指标中贡献度最大,其他两个绿色的表示贡献度次之。在本例中我们可以看到,整个环境的 EJB 消耗全部来自于红色条目的贡献,也就是说,另外两个 EJB 可能并没有被访问。

16. 详细数据页面——贡献度


还有一个看上去较为特殊的视图 —— Correlation,它描述了不同模块在同一指标上的相关性。红色表示相关性高,灰色表示相关性低。如下图所示。

17. 详细数据页面——相关性


在数据模块中还有非常多的信息值得我们去挖掘,这里由于篇幅限制不在一一叙述。

总之,数据是对环境当时情况的客观记录,数据的展现形式是为了便于用户发现其中的问题,它们都是问题诊断和趋势分析的基础。在实际监控过程中,我们应该综合各种因素,从异常数据入手,利用三层监控模型提前预警,层层深入,找到导致问题产生的根本原因,最终解决问题,确保整个环境的正常运转。

回页首

规则引擎

规则引擎是 PTT 工具中的一个重要模块,它提供了可以自定义规则的功能。您可以在规则编辑器中根据需要定制性能参数的预警值,以及达到预警值之后的动作行为,当然您也可以根据实际情况编写更为复杂的程序来满足您的需要。在文章后面我们会详细介绍规则引擎支持的语法和目前提供的性能指标参数。下图为规则编辑器。

18. 规则引擎


规则引擎的使用非常简单,在菜单栏中选择“Analysis->Edit Rules” 或者在工具栏中点击“Edit Rules”按钮即可启动规则编辑器。如下图所示。

19. 启动规则编辑器


规则引擎的语法基于开源规则引擎 Drools,简单易懂,功能强大,稍有编程背景即可快速上手。我们还提供了大量的预定义规则,覆盖众多关键性能指标,即使没有编程基础,只要对已有规则做简单修改,即可得到符合自己要求的定制规则。

预定义规则如下:

    如果 Java Heap 使用超过 85%,抛出一个运行时警告。

    如果线程池使用超过 90%,抛出一个线程池警告。

    如果平均 CPU 使用率超过 90%,抛出一个运行时警告。

    如果有 servlet 错误发生,抛出一个 servlet 警告。

    如果有 JDBC 连接超时,抛出一个连接警告。

    如果出现超过 1000 prepared statement 被废弃,抛出一个连接警告。

    如果有线程等待连接,抛出一个连接警告。

    如果发生 JCA 连接错误,抛出一个 JCA 警告。

    如果已经无法容纳新的 session,抛出一个 session 警告。

    如果有 Thread hung 发生,抛出一个线程池警告。

    如果有交易回滚发生,抛出一个交易警告。

    如果有交易超时发生,抛出一个交易警告。

    如果有代理请求失败,抛出一个代理警告。

    如果检测到 servlet 性能下降,抛出一个 servlet 警告。

    如果检测到 JDBC 性能问题,抛出一个
警告。

接下来我们将通过一段实际代码来介绍规则语法和如何定义一个规则。下面是预定义规则中关于运行时的一段代码:

rule "RunTimeEvent"


					when
					

 RunTimeEvent($cpuUsage:cpuUsage,$usedMemory:usedMemory,$maxHeapSize:maxHeapSize); 


					then
					

 String description = ""; 


					if($cpuUsage > 90){ 

   description = description + "[High CPU Usage (>90%)]"; 

   processedData.setCpuWarningMark(true); 

       } 


					if($usedMemory >= $maxHeapSize*0.85){ 


					if(!description.isEmpty()){ 

        description = description + "  |  "; 

       } 

   description = description + "[" + "Used Memory reach to 85% of the max heap size]"; 

   processedData.setHeapWarningMark(true); 

       } 


					if(!description.isEmpty()){ 

       processedData.addAlert(ALERTTYPE_RUNTIME,description,0); 

       } 

 End

RunTimeEvent 是一个 PTT 软件支持的规则类型,在定义规则时,我们首先要了解想要定义的规则中的性能参数来自哪个规则类型。PTT 工具一共提供了 10 种规则类型,涵盖了 WebSphere Application Server 的各个方面。PTT 工具的帮助中“System Rule”章节有所有规则类型的详细列表。您也可参考清单 1.

清单 1:规则引擎提供的规则类型及性能参数列表

ConnPoolEvent: 

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注