相同環境,java執行速度慢幾倍

2021-09-18 03:16:15 字數 1152 閱讀 1879

在本地環境中執行資料庫查詢的時間是1s左右,而在paas平台中執行相同操作時,需要消耗6秒左右。操作的資料是一樣的。

1、調整容日的基本引數和jvm的引數和本地一致,盡量排除環境引數的干擾。

本地環境:cpu 8核,記憶體16g。jvm配置引數:xms\xmx 8192m\8192m

docker容器:cpu 8核,記憶體16g。jvm配置引數:xms\xmx 8192m\8192m

調整之後重新部署服務,問題依舊存在。

2、檢視容器的執行引數:cpu和記憶體利用率。

使用docker stats 容器id 檢視。注意:paas平台的效能統計的最小時間粒度是分(因平台而異),不能實時反映容器的執行引數。–被這個效能引數誤導了好久。

不進行操作的時候cpu利用率在20%左右,一旦執行查詢操作,cpu利用率飆公升,大於100%。

與本地對比,本地在執行操作的時候cpu利用率在40%左右。嘻嘻,出現點眉目。

3、增大cpu核數。問題仍未解決。查詢是單執行緒操作,和cpu核數應該沒有什麼關係。

4、檢視啟動指令碼,發現jvm開啟了的debug模式。關閉debug模式,繼續嘗試。問題解決,查詢速度和本地一致。操作時,cpu利用率在40%左右。

總結:jvm開啟debug模式後,比較消耗cpu!!!

1、檢視docker容器執行狀態:

docker stats 容器id

2、jvm引數

ms/mx:定義young+old段的總尺寸,ms為jvm啟動時young+old的記憶體大小;mx為最大可占用的young+old記憶體大小。在使用者生產環境上一般將這兩個值設為相同,以減少執行期間系統在記憶體申請上所花的開銷。

newsize/maxnewsize:定義young段的尺寸,newsize為jvm啟動時young的記憶體大小;maxnewsize為最大可占用的young記憶體大小。在使用者生產環境上一般將這兩個值設為相同,以減少執行期間系統在記憶體申請上所花的開銷。

permsize/maxpermsize:定義perm段的尺寸,permsize為jvm啟動時perm的記憶體大小;maxpermsize為最大可占用的perm記憶體大小。在使用者生產環境上一般將這兩個值設為相同,以減少執行期間系統在記憶體申請上所花的開銷。

survivorratio:設定survivor空間和eden空間的比例

參考出處

mysql慢查詢,處理sql語句執行速度慢問題

臨時開啟慢日誌 如重啟資料庫,還會改為預設值off,如需永久改需要修改配置檔案 show variables like slow query log 如果查詢出的值為off則需要開啟慢日誌 set global slow query log on 開啟慢日誌 設定1秒以上為慢查詢 如重啟資料庫,還會...

電腦執行速度慢的解決辦法及分析

一 硬碟壞道 電腦長期使用後,對硬碟造成的磨損會很大,尤其像網咖一類長期開機和非正常關機的電腦,其硬碟損耗會更大,硬碟損壞一般都是從一小部分壞道開始的,然後逐漸的越壞越大,還有的硬碟是由於電源供電不好或硬碟質量不好而造成硬碟馬達執行速度下降,也就是硬碟主機板部分損壞。大家平時要養成良好的習慣,不要 ...

電腦執行速度慢的各種原因及解決方法

大家應該都遇到過電腦速度慢 cpu佔用率很大的情況吧 我看論壇裡面很多人也提出過很多這樣的問題 發了許多帖子 那麼今天我同意回答一下 介紹乙個是什麼原因才會導致出現這種情況 第一次寫貼 請大家支援 有這麼幾個原因會導致上述情況 1.cpu溫度過高所造成所以 自動採用了 降頻 保護自己 cpu 摸一下...