linux線上環境jetty調優方案

ciscopuke發表於2021-09-09

前段時間開發了一個資料上報的系統,

1、記憶體調優:

開啟jetty根目錄下的bin/jetty.sh檔案,修改配置項JAVA_OPTIONS的配置即可。我這裡使用的是如下配置,大家可以進行參考:

JAVA_OPTIONS="-server -Xms6G -Xmx6G -Xmn2G -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=5 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=85 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

我這裡設定的最大記憶體佔用為6G,最小記憶體佔用2G。注意:這個值需要你根據自己的伺服器記憶體來進行配置。


2、配置jetty的執行緒池:

當系統的記憶體和效能夠用的時候,我們可以修改jetty的最大執行緒數來實現提高單臺系統的最高併發,可以修改etc/jetty.xml配置檔案中的如下值:這裡配置的最大執行緒數為600

圖片描述


3、觀察線上環境效能圖:

---我這裡使用的是javamelody外掛來進行分析

  • 記憶體圖:透過檢視該圖的記憶體最大值為6G,也就是我們配置的最大值,且自動進行垃圾回收後,佔用記憶體值下降明顯

圖片描述

  • 活動執行緒圖:從這裡的活動執行緒圖可以看到,最大值為我們配置的600,當然,這裡的活動執行緒數為600並不代表能抗住的併發只有600,這裡出現了活動執行緒數佔用如此之多,只是因為有一次出現了kafka被運維配置錯誤的情況...正常情況下,併發值再高,活動執行緒數一般是穩定在100之下的。

    圖片描述

  • 請求統計圖:這裡是實時統計請求數的圖,因為使用者量還不是很多,這裡的最高值也只有20k+,內網測試500M記憶體200個執行緒併發能達到70K+,因為線上伺服器沒敢輕易嘗試。

    圖片描述

  • 請求併發量:這個值我一直在糾結,該系統的內網用200個執行緒壓,吞吐量為1k+/s左右,但是江湖傳聞,可以使用netstat命令來檢視某個埠的併發量,故則測試環境同樣用200個執行緒壓,使用netstat命令檢視併發結果如下:8K+,內網..,這個系統能抗住的併發量我到底還是沒有辦法壓出來,只知道吞吐量為1800/s左右。當然,如果扛不住就分散式,至少現在沒有出現扛不住的情況,只是希望好心人能告訴我如何測試系統能抗住的最高併發的方式,感謝!

    圖片描述


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

相關文章