一次效能測試調優總結

testingbang發表於2019-08-17

調優過程

在壓測時首先要排除的是高消耗 SQL(經過 AWR 報告分析後 HSC沒有出現高消耗 SQL)本次 SZ割接壓測經過以下幾個關鍵點的調優:
1) 指令碼引數調優 (資料已存在,欄位值太長錯誤較多調節指令碼引數模式及引數長度)
2) JDBC配置調優 (JDBC使用率 100%,連線數調成 100 後,極限測試時使用在 80 個連線左右)
3) WAS配置調優 (主要是 webcontainer 調成 200,極限測試時使用達到 200,但主機CPU資源消耗在 50%以上,且 TPS也超過指標 10 來倍,不再增加配置)
4) IHS配置調優 (主要是 http.conf 檔案引數調整)
5) linux 系統調優 (主要是網路引數調整,及 open file 調整)
6) Systemout 日誌中不列印應用日誌(減少不必要的磁碟 IO 消耗)。


下面逐一分解每個關鍵調優時出現的問題及定位

JDBC連線數配置調優

在壓測過程中一直發現TPS上不去,並隨著測試時間的加長,間斷性出現超時現象。透過對主機資源的 CPU, 記憶體,IO分析沒有存在效能瓶頸,並同時對網路傳輸蘇蘇進行測試發現也沒有任何瓶頸。透過對監控控制檯觀察到,JDBC: waitingTreadCount (等待連線數)達到 80 多個。同時 JDBC:Poolsize一直儲存在 10。診斷為 JDBC連線數過小導致。

檢查每 WAS server的連線數後, 發現最大是 10,立馬把每個 server 的 JDBC最大連線改成了 100 ,最小連線數改為10,並同步叢集, 清除場景跑出的壓測資料後 (還原資料庫環境) ,再次進行調測,TPS保持在 200 筆左右, 且相對較為平穩, 此時效能值已經符合上線要求

WAS 配置調優

經過上面 JDBC的調節, 效能已經達到了上線的要求, 但經過分析主機資源消耗較小,為了使用主機資源合理利用,或達到效能極限值,加大併發進行測試,在測試過程中出現有 http404錯誤。由此聯想到 WAS server配置是否不合理。透過壓測過程中檢視server 的 Webcontainner連線數使用一直都是98-100,看來webContrainner也是效能瓶頸。

透過access_log可以看出來確實有404,沒有找到這些檔案,原因是當前的配置為轉發到4個WAS server,而這4個server都在滿負荷工作,導致有些請求無法處理而出現404.解決方法也很簡單,增加was server的webcontainner數量,將最小連線數從1改為25,最大連線數從100改為200,之後迴歸測試看效果。


結果令人興奮: TPS最高值已經可以達到 800 以上了, 404 錯誤消失,但我們可以看到波動還是很大, 隨著場景的執行 TPS下到只有 400 多,有效能風險, 說不定哪天就停止響應了

IHS 配置調優

在加壓的測試過程中(接上)出現 TPS達到較高值後,又迅速下降的情況,且響應時間有上升趨勢,存在效能風險。經過檢視 IHS(error_log )日誌發現有堆積。透過與IBM專家交流建議調整引數,最終調整為


調整 IHS配置後 ,並重啟 IHS壓測執行 5 分鐘後 ,TPS達到 1200,隨後下降到 1000 保持穩定。但新的問題出現了:
Error -108977:Action.c(6) Error Failed to connect to server "10.252.17.2186" [10048] Address
already in use
Try changing the registry value
HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParametersTcpTimedWaitDel
ay to 30
and HKEY_LOCAL_MACHINESyst0  68

linux 系統調優

出現上述問題根據經驗一般都是壓測客戶端的問題,解決方法無非是修改登錄檔,增加壓測機器,但是。。。。。居然都沒用。這時候突然想到看看tcp連線的情況,結果發現有大量的timewait,大概有1000個以上,嚇得趕緊去調整linux核心引數了。修改/etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time=300
net.ipv4.tcp_keepalive_probless=55

net.ipv4.tcp_keepalive_intvl=22

使用埠範圍改為ip_local_port_range 9000到65500,別忘了修改完要/sbin/sysctl讓生效啊

經過上述調優,TPS達到1300以上且穩定。

關於日誌

切記不必要的日誌最好不要條條列印,在併發量大的情況下會明顯影響效能的


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2653995/,如需轉載,請註明出處,否則將追究法律責任。

相關文章