一次性能測試調優總結

調優過程

在壓測時首先要排除的是高消耗 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以上且穩定。

關於日誌

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章