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…