筆者是一名工作10年的java程序員,現在在某大廠任職架構師,工作中總結了很多關於jvm參數的經驗。基於這些經驗,筆者打造了一款可以全自動分析jvm參數並給出改善建議的產品:SimpleJVM,來幫助大家快速解析jvm參數,並得到最佳的改善建議。
jvm 為什麼那麼重要
不管在工作還是面試中,jvm 參數的設置都是 java 開發人員的重點核心工作。
jvm 是面試中的常客,但是對於大多數同學而已,工作中往往沒有特別好的高併發、低延遲等項目來得到jvm參數設置/調優的機會。
jvm 的配置設置不合理可能會帶來以下問題
- gc頻繁,導致應用響應時間不理想
- 浪費資源(cpu和內存)
- 無法瞭解jvm工作的情況
- ....
jvm 為什麼那麼難學
jvm 的參數非常多,僅gc和內存相關的參數就超過600個,這麼多的參數,真不是每個人都能學得過來的。
自動化診斷工具
筆者基於歷史各種公司級、十億級級流量服務的優化經驗,開發了這款jvm參數自動化解析的產品 simpleJVM,只需要輸入目前的jvm參數,就能自動診斷出來jvm參數需要如何調整。如果能提供jdk版本的話,還能結合版本來做出更詳細的診斷。
simpleJVM的網址是 https://www.moyucoding.com
- 輸入現有參數
以筆者曾經負責過的一個服務為例,該服務使用jdk8,參數為-Xms3g -Xmx3g -Xmn2g -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection
在jvm參數中輸入對應參數,版本選擇8
- 分析
點擊左下角的分析按鈕即可,等待片刻,分析結果就會自動產出。
分析結果分為三個級別,根據影響範圍和嚴重級別來區分。
根據建議產出的最後的jvm配置:
-Xms3g -Xmx3g -Xmn2g -Xss512K -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/service/usercenter/log/dump.hprof -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/service/usercenter/log/gc-hunteronlinecheck.log
總結
SimpleJVM 是一款能夠自動化分析jvm參數並給出建議的網站,幫助大家事半功倍解決jvm調參問題。
同時我們還提供SimpleGC產品,能夠自動化分析gc日誌,並結合AI給出智能的高效的改善建議 :)
關於產品的使用問題,大家可以在評論區留言