String node
String server
String name
double throughput
double jdbcThroughput
double avgResponseTime
double avgJdbcResponseTime
double avgWaitTime
long errorCount
double prepStmtCacheDiscardCount
long poolSize
long maxPoolSize
long minPoolSize
long usedPool
EjbEvent:
String node
String server
String beanName
String jarName
String methodName
String beanType
double throughput
double avgResponseTime
long concurrentInvocations
JcaPoolEvent:
String node
String server
String name
double throughput
double avgResponseTime
double avgWaitTime
long errorCount
long maxUsagePercentage
long poolSize
long maxPoolSize
long minPoolSize
long usedPool
PerformanceEvent:
double changeRateOfServletResponseTime
double changeRateOfServletThroughput
double changeRateOfWebPoolUsed
RunTimeEvent:
long cpuUsage
long heapSize
long maxHeapSize
long usedMemory
ProxyEvent:
double throughput
double proxiedThroughput
double localThroughput
double responseTime
double serverResponseTime
long outboundConnectionCount
long activeOutboundConnectionCount
long failedRequestCount
long cacheHitCountValidated
long cacheHitCountUnvalidated
long cacheMissCount
ServletEvent:
String name
String appName
double throughput
double avgResponseTime
long errorCount
long webPoolUsedSize
String server
String node
SessionEvent:
String name
long liveCount
long avgLifeTime
long noRoomForNewSessionCount
long affinityBreakCount
long timeoutInvalidationCount
long activateNonExistSessionCount
long cacheDiscardCount
String server
String node
ThreadPoolEvent:
String poolName ;
long maxSize
long minSize
long poolUsed
long poolSize
long declaredThreadHungCount
long clearedThreadHangCount
long concurrentHungThreadCount
String server
String node
TransactionEvent:
double throughput
double avgResponseTime
double globalTranResponseTime
double localTranResponseTime
double rolledbackPercentage
long rolledbackCount
long globalTimeoutCount
long localTimeoutCount
以 RunTimeEvent 为例,它包含的性能参数有 long cpuUsage ,long heapSize ,long maxHeapSize ,long usedMemory 。所以此规则可以对这四项指标进行监控和预警。从后面的代码中我们可以清晰地看到,规则通过语句“RunTimeEvent($cpuUsage:cpuUsage,$usedMemory:usedMemory,$maxHeapSize:maxHeapSize);”对这几个变量进行了赋值,然后分别对 CPU 和内存的使用情况作了判断并采取了相应的预警行为。这些预警
行为将以警告(Alert)的形式在趋势视图界面中展现出来,同时也会在数据视图中的 Alert 页面出现,共分析和参考。如下图所示。
图 20 规则 —— 警告
规则编辑器还提供了语法检查功能,来确保您的自定义规则可以正常运行。只需点击规则编辑器左上角的语法检查按钮即可。如果有规则中存在语法错误,编辑器将给与提示。如下图所示。
图 21. 规则编辑器 —— 语法检查
当通过语法检查以后,您就可以通过点击左上角的保存按钮来使您的规则生效。此规则一旦生效,在以后的监控过程中就会对您所定义的性能参数进行监控和预警,并执行相应的行为。
总之,规则引擎模块为 PTT 工具提供了一个用户可以扩展和编程的接口,这可以让 PTT 工具的监控结果更加符合用户的环境和需求。因为没有一个规则可以放之四海而皆准,所以用户越了解自己的应用环境,指定符合自己环境的规则,PTT 工具就可以越好地产生更加贴近实际环境的预警,从而在第一时间捕获异常。
WebSphere Application Server Performance Tuning Toolkit (PTT) 不但可以对服务器进行性能监控,还可以快速地帮助用户进行服务器调优和故障诊断,并对监控的数据进行整体的总结和生成报表。接下来我们就通过实例展示如何使用 PTT 工具进行性能调优。
调整参数
环境搭建好后,我们需要对服务器进行调优使服务器达到最优的性能。PTT 工具提供两种服务器调优的方式:通过调整参数页面和执行调优脚本。
调整参数页面是一个比较直观的列表页面,它可以帮助用户检查和更新服务器的 JVM、Web 容器、线程池等设置。在这个页面中,用户不但可以修改单个服务器的配置,还可以同时修改所有服务器的配置,从而减少用户重复登录服务器控制台页面的时间。
为了节省启动时间,PTT 工具默认不会读取服务器的参数配置。用户可以在 Tuning Parameters 页面的右上角点击“Retrieve Config from server”按钮抽取指定的服务器配置。抽取成功后,页面下方的服务器表格将显示服务器的详细配置信息。当然,用户也可以选中所有服务器同时抽取。如图 1 所示:
图 1. 抽取服务器配置
您可以在调整参数页面中修改和查看以下信息:
目标服务器的服务器名称和节点名称;JVM 的初始 HeapSize、最大 HeapSize、JVM 参数和是否启用 VerboseGC;Web 容器池的最小和最大值、Session 超时时间;Orb 线程池的最小和最大值;JMS 线程池的最小和最大值;默认线程池的最小和最大值;HTTS 和 HTTPS 的 Keep Alive 值和最大请求数。
在抽取服务器配置之后,用户就可以更新服务器的配置了,被修改的参数值将被显示成红色。点击右上角的“Update Config from server”按钮。如图 2 所示:
图 2. 更新服务器配置
这里您可以放心地修改每一个参数,因为,PTT 工具会帮助我们检测修改值是否有效。比如是否是数值,数值是否大于零。如果修改类型错误,PTT 工具会报出相应的错误提示,确保用户修改的服务器参数都是正确无误的。如图 3 所示:
图 3. 修改配置错误提示
利用调整参数页面进行服务器调优的好处是快速、准确。当服务器数量非常多的时候,一个页面就可以同时修改多项参数,并提供正确性检测。但调整参数页面也有一些不足,就是用户只能调整一些规定好的参数,对于一些特定的参数和较为复杂的调优设置,调整参数页面就做不到了。
不过没关系,PTT 工具还提供另一种调优方式,我们可以通过执行 wsadmin 脚本的方式进行特殊或者复杂的配置调优。脚本页面位于 PTT 工具的左下角,它和拓扑结构页面位于同一个标签,点击不同的标签可以相互切换。如图 4 所示:
图 4. 切换脚本页面
脚本页面提供三个默认的调优脚本:manageResource.py 是用来管理资源的,tuneResource.py 是用来调优资源的,如调整连接数或数据源等,tuneServer.py 是用来调整服务器参数的。在 tuneServer.py 中 PTT 给用户提供了许多较为普遍的调优方案,它可以根据您的操作系统和拓扑结构对您的环境进行细致的调优,如清单 1 所示:
清单 1. JVM 参数调优
os = registry.getProperty(“os.name”)
if (os.find(“Windows”) > -1):
genericArgs = genericArgs + IBMJDKoptions
elif (os.find(“AIX”) > -1):
genericArgs = genericArgs + IBMJDKoptions
elif (os.find(“Linux”) > -1):
genericArgs = genericArgs + IBMJDKoptions
elif (os.find(“SunOS”) > -1):
genericArgs = genericArgs + SUNJDKoptions
elif (os.find(“HP-UX”) > -1):
genericArgs = genericArgs + HPJDKoptions
elif (os.find(“z/OS”) > -1):
genericArgs = genericArgs + IBMJDKoptions
minHeap = 768
maxHeap = 768
elif (os.find(“OS/400”) > -1):
genericArgs = genericArgs + ISerisJDKoptions
maxHeap = 0
用户也可以打开此脚本进行自定制的修改。右键脚本选择 Run Script 执行。在 Console 页面中同样可以看到执行过程和结果。如图 5-6 所示:
图 5. 执行调优脚本
以下文章点击率最高
Loading…