当前位置:文档之家› WAS监控调优思路及工具汇总

WAS监控调优思路及工具汇总

WAS整理——侯泰浩一、WAS是什么IBM WAS的全称是IBM WebSphere Application Server,和Weblogic一样,是当前主流的 App Server (应用服务器)之一1.1术语WAS: IBM Websphere Aplication Server, 中间件应用服务程序;IHS: IBM HTTP SERVERDM: Deployment Manager, WAS中的集群管理节点;ND: NodeAgent, WAS中的节点监听程序;JVM: Java Virtual Machine, Java虚拟机;GC: Gabage Collection, 自动垃圾回收1.2W AS ND集群基本概念及体系结构WAS集群由一组应用服务器组成,每个服务器上部署了同样的应用程序。

通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。

下图是ND分布式环境的体系结构,包括单元、节点、服务器等基本概念。

WAS群集是为了实现集中管理和负载均衡同时可以实现故障转移,一个2节点的群集拓扑如下:其中,DeploymentManager通过每个节点上的NodeAgent完成对AppServer的配置修改、应用发布以及启动和停止,实现集中管理。

如果安装多个IHS,并实现负载均衡和分发,可以使用防火墙的负载分发功能。

每个节点上的AppServer可以是多个的。

二、WAS基本参数配置三、WAS的调优思路3.1基本思路部署在WAS上的应用程序,其性能是由多个因素决定的。

例如网络、数据库、内存分配、WAS服务器的配置以及应用程序的设计。

对于一个标准的 J2EE应用,一个请求到来时,往往需要经过多次转发:网络 > Web服务器Web容器 > EJB容器 > 数据库。

而每一次转发,都可能造成请求处理的瓶颈,使得应用程序整体性能下降。

如果我们把每一次转发的待处理资源都看成一个队列,如下图:待处理资源队列对于WAS调优,要记住的一个基本原则就是,使得在队列中等待的请求的数量最小化。

在实践中我们发现,为了达到这个目的,最有效的配置方式就是使得队列成为一个“漏斗”。

也就是说,越靠近客户端的队列,其容量越大,而后面的队列,其容量要略小于或等于前面的队列。

3.2WAS主要的调优参数3.2.1WAS服务器参数Web Server的最大并发用户:这个设置是在conf/httpd.conf这个文件里面配置的。

在Unix系统中,对应的属性是MaxClient;在Windows系统中,对应的属性是ThreadsPerChild。

Web Container的最大、最小并发用户:在管理控制台中点击应用程序服务器 > server1 > 线程池 >WebContainer,根据观察的性能情况和应用情况输入合适的最小、最大进程数。

对象请求代理(ORB)的线程池大小:在管理控制台中点击应用程序服务器 > server1 > ORB 服务 > 线程池,根据观察的性能情况和应用情况输入合适的最小、最大进程数。

设置数据库的连接池属性:JDBC 提供者 >数据库JDBC驱动名称 > 数据源 > 数据源名称> 连接池,根据观察的性能情况和应用情况输入合适的最小、最大连接数。

JVM堆参数设置的性能调优:应用程序服务器 > server1 > 进程定义 > Java 虚拟机,根据硬件物理内存和应用情况输入合适的初始堆大小、最大堆大小。

ORB参数调用方式的性能调优:应用程序服务器 > server1 > ORB 服务>选中按引用传递。

关闭动态加载开关:企业应用程序 > 应用名称 > 关闭启动类重新装入开关。

关闭会话序列化,应用程序服务器 > server1 > 会话管理 > 分布式环境设置 > 分布式会话选择无即可。

3.2.2JVM的参数WAS 在HP和 Solaris 上使用的是 Sun提供的JVM,在其他平台使用的是IBM自己的JVM,建议使用WAS自带的JVM,因为在产品支持等方面会获得更多地优势Heapsize(-Xms 和-Xmx):heapsize的大小依赖于系统平台和具体的应用等多种因素。

最大 heapsize需要小于机器的物理内存,一般来说,设置最大 heapsize 为 512m 是一个常见的起点。

同时,在生产环境中,最好将 Xms 设置为小于 Xmx的值。

GC(Garbage Collection,自动垃圾回收):一般来说,良好的 GC状态需要保证相邻两次垃圾回收的平均间隔时间应当是单次垃圾回收所需时间的至少 5-6倍。

GC的调优是通过在模拟压力的情况下不断调整最大最小 heapsize 来实现的。

Heap Fragmentation (heap碎片):heap 碎片的问题在 JVM 中存在大对象的情况下尤为突出。

减少碎片的方法包括调整 pCluster (-Xp)和 kCluster(-Xk)参数。

3.2.3Web Container (Web容器)对 Web Container 的调优是通过对 Web Container 传输链中各个通道(TCP、HTTP、WebContainer)的参数调整进行的。

这些参数包括诸如 ThreadPool 的最大最小值,buffer大小, timeout 时间的大小, keep-alive 的值等等。

Web容器线程池要点就是:“通常,对于每个服务器 CPU,5 至 10 个线程将会提供最佳吞吐量”(现在的一个cpu可以用核来代替)。

比如你的Pc Server有2块CPU,每块CPU都是4核,那么你一个Application Server可以设置的最小值和最大值可以分别为40、80。

但是一般考虑到能充分利用CPU和Memory,或者为不同的应用启用不同的 application server,一台Pc Server上并不仅有这么一个appserver,而且还有别的进程在占用着CPU,所以默认的10到50(Linux 系统上 25 个)是一个比较合适的值,当然更准确的值需要通过性能测试来确定。

在进行性能测试的时候,如果吞吐率不是很满意,或者在TPV中看到线程池占用一直是最大值,不要立刻就调大线程池的设置——往往吞吐率会更一步下降。

这时候要注意CPU占用率的情况、vmstat的r列值,特别是System状态占用率的情况,如果接近10%,甚至超过10%,那么可以肯定系统在进程切换上面消耗的资源太多了。

下调线程池的大小反而会提升吞吐率,而且会由于吞吐率的提升降低页面平均响应时间。

3.2.4Data Source对 Data Source的优化包括两个方面。

一是 JDBC Driver 的选取,尽可能应使用 Type 4 的JDBC driver,这种 driver 是纯java的,适用于 client/server 模式,并提供比 type2 和legacy/CLI 的driver 更好的性能。

另一方面是 Database 连接池的参数设置,主要包括最大和最小连接以及 timeout 的设置。

具体的设置于应用程序的特性和并发用户量相关,一般来说,可设置最小连接为 1 且最大连接为 30,作为一个继续调优的起点。

Application Server 将在使用该数据源的每个应用程序服务器中创建连接池的单独实例。

例如:如果运行包含三个服务器的集群,这三个服务器都使用 myDataSource ,并且 myDataSource 的“最大连接数”设置为 10,那么可生成多达 30 个连接(3 个服务器乘以 10 个连接)。

3.2.5 其他除了 JVM ,Web Container 和 Data Source 之外,WAS 的性能调优还包括很多其他方面的内容,如 JMS 、EJB 、Session 、Dynamic Cache 等等。

四、 监控工具 4.1 WAS 自带的TPVWAS 中免费提供的 Tivoli® Performance Viewer (TPV )允许客户对关键资源(如 JVM 、Web 容器和 EJB 容器以及远程连接池)进行监视。

显示从本地或远程应用服务器收集的PMI (Performance Monitoring Infrastructure )数据摘要报告:表格方式查看性能模块:图形方式查看性能模块:但是TPV 有一些明显缺点:WAS自带TPV的缺点.doc4.2Java性能监测工具Jprofiler/Jprobe:JProfiler是一个全功能的Java剖析工具(profiler),专用于分析J2SE和J2EE应用程序。

JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。

它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存漏失;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象、或在终结(finalization)队列的对象都会被移除;整合精灵以便剖析浏览器的Java外挂功能。

JProbe是一个完全为Java设计的解析器,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析功能。

主要用于识别内存泄漏、智能化内存分析、垃圾回收分析等用于JVM 生成的信息的工具还包括有:用于VerboseGC 分析:IBM Monitoring and Diagnostic Tools for Java - Garbage Collection and Memory Visualizer (GCMV) :一个详细的 GC 数据可视化器,用于分析并绘制所有 IBM 详细 GC 日志——Xtgc 输出(并且可扩展到分析和绘制其他形式的输入)。

它提供了广泛的详细 GC 数据值的图形显示,并处理 optthruput、optavgpause 和gencon GC 模式。

它具有原始日志、表格式数据和图表视图,并且可以将数据保存到 jpeg 或 .csv 文件(用于导出到电子表格)。

请参阅IBM Support Assistant中的完整描述。

输入:verbosegc 日志输出:图形表示形式、html、jpeg 或 csv 文件支持:此工具由 IBM 提供支持,目前是用于其所在领域的主要工具。

IBM Pattern Modeling and Analysis Tool (PMAT) for Java Garbage Collector :分析 IBM 详细 GC 跟踪,分析 Java 堆使用情况,并基于 Java 堆使用情况的模式建模提供重要配置建议。

相关主题