記一次專案cpu100 情況解決過程

2021-10-07 02:44:34 字數 683 閱讀 7548

下午14:29分,運維突然告知,某專案cpu100%,趕緊找到運維開始排查問題

一、通過top命令排查出占用執行緒,發現占用cpu的執行緒是gc程式

見:

二、通過jstat命令檢視記憶體狀態,發現full gc達到150多次。此時仍然無法定位問題。

三、通過檢視異常時間段nginx日誌,發現有個介面傳的引數異常,日誌如下

/bookqr/qrcode/checkactivation?activation= 這個介面中,activation本該有值的。但是傳空了。

四、本地模擬了下activation傳空的情況,發現確有出現cpu100%的情況。

原因是t_qr_userinfo表有800w條資料,符合空值條件的有422w,mybatis嘗試把422w 個物件放入記憶體,所以造成記憶體吃緊。進而引起full gc次數增加。最後造成的表象是cpu一直100%,此時定位到問題。

五、解決辦法,增加非空判斷

assert.istrue(!stringutils.isempty(activation), messageformat.format(conshint.arg_validation_err, "activation"));

記一次解決MYSQL占用CPU100 的問題

有張表50w條資料,今天寫了個job每隔10秒對其進行分組查詢並獲取每組的第一條資料。select select kvarh total from e monitorhours where mobusid a.mobusid order by id desc limit 1 askvarh tota...

php cgi占用cpu100 的一次排障之旅

php cgi占用cpu100 的一次排障之旅 先說下我們 的架構 由於目前 訪問量不是很大,但是由於最近公司 要推廣,所以將 由單機切換成前端用 nginx 做負載均衡,帶動兩台 web伺服器,所有網頁和靜態檔案都通過 nfs共享呼叫,nfs服務裝在其中的乙個 web伺服器上,後端用 mysql ...

記二次C 遊戲伺服器CPU 100 解決過程

第一次 top c 檢視一下程序id 30850 pstack 30850 檢視一下當前堆疊的資訊,刷一閃,滿屏std的東西 乙個乙個執行緒慢慢看下來,發現 最終在 strtext.replace size,strlen pszsrctext pszdesttext 再往上看一層 strreplac...