本文介紹Sidecar的內存持續升高的問題現象、問題原因和解決方案。
問題現象
在容器Pod的內存監控中,發現Sidecar的內存持續升高。
問題原因
內存持續升高的原因及說明如下。
原因 | 說明 |
Sidecar配置 | 默認情況下,Sidecar擁有集群下所有服務的端點信息和相關配置。這部分配置會占有一定的內存。隨著集群下部署的業務服務數增多,配置也會增多,導致內存變大。 |
實時請求的流量 | Envoy作為轉發代理,會存在接收和響應的Buffer,以及一些請求的緩存隊列,這些都會占用內存。 |
Metrics指標發散 | 當Metrics指標發散時,占用的內存逐漸增多。 |
gRPC流控相關數據 | Sidecar的HTTP2解碼器包含initial_stream_window_size和initial_connection_window_size兩個參數,分別對應Sidecar在HTTP2編解碼緩沖區中流級別的緩沖字節限制、連接級的緩沖字節限制。默認情況下,這兩個參數被設定為256 MB。當服務的數據處理能力不足時,數據會在Sidecar內存中堆積,導致內存占用增長。 |
解決方案
Sidecar配置
您可以登錄ASM控制臺,在Sidecar資源推薦頁面配置Sidecar的服務范圍,減少Sidecar的內存占用。具體操作,請參見配置推送優化概述。
實時請求的流量
- 登錄ASM控制臺,在左側導航欄,選擇 。
- 在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
- 在Sidecar代理配置頁面的全局頁簽,單擊按端口或地址來啟用/禁用Sidecar代理,配置攔截范圍。例如,您可以將中間件Redis(2379端口)、MySQL(3306端口)或集群外部的請求等,設置為不攔截。
Metrics指標發散
您可以通過配置指標過濾,設置相關指標不進行統計。具體操作,請參見在ASM中自定義監控指標。
gRPC流控相關數據
gRPC請求和上下游服務對應的Stream的大小以及單個Stream Buffer相關。您可以登錄ASM控制臺,設置HTTP2的初始流量窗口大小,優化Envoy的內存占用。
- 登錄ASM控制臺,在左側導航欄,選擇 。
- 在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
- 在插件市場頁面,單擊設置http2的初始流量窗口大小卡片,進行相關配置。
文檔內容是否對您有幫助?