JVM的調優案例03
外部命令導致系統緩慢
問題
一個數字校園應用系統,做併發壓力測試時發現請求響應時間比較慢
原因
Java程序中Runtme.getRuntime().exec()來執行外部的shell命令,fork創建了新的進程,系統的消耗大,處理器和內存的負擔大
解決
去掉調用外部的shell腳本,改用Java的API來獲取系統信息
服務器虛擬機進程崩潰
問題
一個基於B/S的MISS系統頻繁出現虛擬機進程自動關閉的現象
原因
異步調用web服務,但是因爲兩邊的服務速度不完全對等,時間長積累了未調用完成的web服務,導致等待線程和Socket連接多到超過虛擬機的承受能力,導致虛擬機進程崩潰
解決
將異步調用改爲 生產者/消費者的MQ後系統正常