系統在資料量達到乙個比較高的水平後CPU居高不下

2021-10-06 21:47:57 字數 496 閱讀 2400

排查步驟

使用jstack檢查程序的執行緒狀態,發現fullgc執行緒很忙。

檢視gc日誌,發現full-gc頻繁執行,每秒一次。出現fullgc只能是記憶體達到預設大小.由此可以斷定是記憶體的問題。

檢視系統堆轉儲快照,除了char和string之外,排名第三的就是concurrenthashmap型別的資料,而這部分幾乎都是用來快取全域性變數用的。

結合**和之前列印的日誌,發現有一部分記憶體數量比較可觀。

這部分記憶體儲存的是承上啟下的資料,並且在資料結構完整處理之後會清理。注意是資料結構完整的前提下才會處理。

分析日誌發現上游資料質量差強人意,資料的完整率只有70%。這就意味著每次有30%的快取資料得不到釋放,長此以往必會達到記憶體瓶頸。

解決辦法

對需要快取的靜態變數進行控制,設定儲存大小上限。實時監測儲存數量,一旦達到上線就清理10%,程式自動判斷自動處理,避免fullgc他老人家出面。

有序陣列在資料量較少時候的查詢效率比較

筆者曾經參加過某瀏覽器開發,記得當時在做瀏覽器放大和縮小的時候,產品經理規定滾動滑鼠增加時百分之5,10,15,35,45,50,65,75,85,90,95,100,105,125,150,175,200。當時參加開發的同學就將這組資料做成乙個表,然後每次滾動放大或者縮小都首先獲取當前數值,然後從...

如何提公升乙個系統的吞吐量

吞吐量 throughput 通常是指系統每秒完成的操作量。這個指標通常被稱作每秒事務數 tps 乙個系統的吞度量 承壓能力 與request對cpu的消耗 外部介面 io等等緊密關聯。單個reqeust 對cpu消耗越高,外部系統介面 io影響速度越慢,系統吞吐能力越低,反之越高。tps 併發數 ...

從還有乙個角度看大資料量處理利器 布隆過濾器

思路 從簡單的排序談到bitmap演算法。再談到資料去重問題,談到大資料量處理利器 布隆過濾器。情景1 對無反覆的資料進行排序 給定資料 2,4。1,12。9,7,6 怎樣對它排序?方法1 主要的排序方法包含冒泡,快排等。方法2 使用bitmap演算法 方法1就不介紹了。方法2中所謂的bitmap是...