rabbitMQ服務記憶體占用大問題

2021-10-05 19:16:52 字數 1073 閱讀 1397

業務發現rabbitmq的伺服器出現記憶體出現無限增加,由sre和業務同事提出:想增加下qos配置,prefetchcount來限制消費端無限制的接受訊息 導致消費服務應用記憶體一直增加

jvm現象:

頻繁gc,dump堆資料看發現4g的記憶體,有3g都是這樣的物件

rabbitmq資料指標:

unacked表示已經下發到消費端沒有ack

之前提到過preftech這個引數指標,但是基礎元件的sdk封裝時沒有預留這個引數介面

preftech引數作用和功能:官方文件

也就是說通過消費channel的qos配置,來告訴rabbit這個channel消費者的緩衝區數目,從而達到防止緩衝區無限增大

修改元件增加preftech配置引數介面,後續驗證有效

對於上面引數配置大小的合理性問題提出優化疑問:int prefetchcount = 0; // 消費者訊息預讀取數量,預設不限制,預設限制更好一點點

最後決定:1. size 不支援 2. consumer 數量不知道 3. 快、慢不知道 所以結論很簡單,預設0

最後這個最佳引數大小,由使用方自己進行控制。

例如通過apollo配置,一邊觀察一邊調整

1.sdk版本公升級基礎元件預留出preftech配置介面

2.preftech引數大小由使用者根據自身服務情況優化

SQL Server占用伺服器記憶體過高

sql server對伺服器記憶體的使用策略是用多少記憶體就占用多少記憶體,只用在伺服器記憶體不足時,才會釋放一點占用的記憶體,所以sql server 伺服器記憶體往往會占用很高。檢視記憶體狀態 dbcc memorystatus這些記憶體一般都是sql server執行時候用作快取的 1.資料快...

RabbitMQ記憶體爆出

rabbitmq公升級到3.6.1版本後,隨著業務和系統功能的增加,出現rabbitmq記憶體陡增直至服務宕掉的情況。記憶體增加時,在management管理控制台上可以見到如下警告 the management statistics database currently has a queue o...

類記憶體占用

類所佔記憶體的大小是由成員變數 靜態變數除外 決定的,成員函式 是不計算在內的。成員函式還是以一般的函式一樣的存在。a.fun 是通過fun a.this 來呼叫的。所謂成員函式只是在名義上是類裡的。其實成員函式的大小不在類的物件裡面,同乙個類的多個物件共享函式 而我們訪問類的成員函式是通過類裡面的...