如何防止 ES 被 Linux OOM Killer 殺掉

當 Linux 系統內存不足時,內核會找出一個進程 kill 掉它釋放內存,旨在保障整個系統不至于崩潰。如果 ES 按照最佳實踐去實施部署,會保留一半的內存,不至于發生此類事情。但事情總有例外,有的朋友可能 ES 和其他的程序部署在一起,當主機內存不足時,那么 ES 很有可能會被內核 Kill 掉。

關于 OOM Killer

Linux 內核根據系統上運行的應用程序需求分配內存。由于許多應用程序預先分配內存,并且通常不使用分配的內存,因此內核設計為能夠超額使用內存以提高內存使用效率。這種超額提交模型允許內核分配的內存多于其實際可用的內存。如果進程實際使用了分配給它的內存,則內核會將這些資源提供給應用程序。當太多應用程序開始使用它們分配的內存時,超額提交模型有時會出現問題,內核必須開始終止進程才能保持系統運行。內核用于恢復系統內存的機制稱為內存不足終止程序或簡稱 OOM Killer。

找出進程被 Kill 的原因

在對應用程序被 OOM Killer 終止的問題進行故障排除時,有幾條線索可能會表明進程被終止的方式和原因。在以下示例中,我們將查看操作系統的日志,看看是否可以找到問題的根源。由于內存不足的情況,Elasticsearch 進程被 OOM Killer 程序終止。Killed 中的大寫 K 表示該進程被 -9 信號終止,這通常是一個兆頭,表明 OOM Killer 可能是罪魁禍首。

grep -i kill /var/log/messages*
host kernel: Out of Memory: Killed process 2592 (elasticsearch).

OOM Killer 選擇機制

OOM Killer 是 Linux 系統中用于內存管理的一個重要機制。當系統內存不足時,OOM Killer 會遍歷所有進程,綜合考慮進程占用的內存和配置的 oom_score_adj 值來計算每個進程的 oom_score,最終選擇得分最高的進程進行終止。如果多個進程得分相同,則優先終止最先被掃描到的進程。
你可以通過查看 /proc/[pid]/oom_score 文件來獲取每個進程的 oom_score 值,該值會根據進程內存使用情況的變化而實時更新。當前得分最高的進程將在下一次 OOM 事件中被優先終止。

如果你希望某個進程在內存不足時避免被優先終止,可以通過調整該進程的 oom_score_adj 值來降低其 oom_score。

oom_adj 是一個舊的接口參數,其功能類似 oom_score_adj ,為了兼容,目前仍然保留這個參數,當操作這個參數的時候,kernel 實際上是會換算成 oom_score_adj 。

配置進程 oom_score_adj

通過上面的講解可知,我們可以通過配置進程的 oom_score_adj 或 oom_adj 來避免其在系統內存不足時被終止的風險。

如果我們想降低 PID 為 2592 進程被 OOM Killer 終止的可能性,我們可以執行以下操作:

# 新接口
echo -500 > /proc/2592/oom_score_adj# 老接口
echo -15 > /proc/2592/oom_adj 

如果我們想提高 PID 為 2592 進程被 OOM Killer 終止的可能性,我們可以執行以下操作:

# 新接口
echo 500 > /proc/2592/oom_score_adj# 老接口
echo 10 > /proc/2592/oom_adj

如果你希望某個關鍵進程絕對不能被終止,可以執行以下操作:

# 新接口
echo -1000 > /proc/2592/oom_score_adj# 老接口
echo -17 > /proc/2592/oom_adj

希望對多程序混合部署的小伙伴有所幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903479.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

swagger2升級至openapi3的利器--swagger2openapi

背景: 因為項目需要升級JDK,涉及到swagger2升級至openapi3的情況。由于swagger 2和openapi 3的語法差距太大,需要對yaml進行升級。無奈單個yaml文件的內容太大,高至4萬多行,手動進行語法的轉換肯定是不可能了&#xff…

在yolo中Ultralytics是什么意思呢?超越分析的智能

在YOLO(You Only Look Once)目標檢測框架中,Ultralytics 是一家專注于計算機視覺和機器學習技術的公司,同時也是YOLO系列模型(如YOLOv5、YOLOv8等)的官方開發和維護團隊。以下是關鍵點解析: 1. …

【阿里云大模型高級工程師ACP習題集】2.7 通過微調增強模型能力 (上篇)(?????? 重點章節!!!)

習題集: 【單選題】在大模型微調中,與提示工程和RAG相比,微調的獨特優勢在于( ) A. 無需外部工具即可提升模型表現 B. 能讓模型學習特定領域知識,提升底層能力 C. 可以更高效地檢索知識 D. 能直接提升模型的知識邊界,無需訓練 【多選題】以下關于機器學習和傳統編程的說…

CuML + Cudf (RAPIDS) 加速python數據分析腳本

如果有人在用Nvidia RAPIDS加速pandas和sklearn等庫,請看我這個小示例,可以節省你大量時間。 1. 創建環境 請使用uv,而非conda/mamba。 # install uv if not yetcurl -LsSf https://astral.sh/uv/install.sh | shuv init data_gpucd data_g…

2-SAT之完美塔防

小N最近喜歡玩一款塔防游戲。 題目描述 這款游戲的棋盤是一個 nm 的網格,每個格子上會有以下類型物件: A 型炮臺:會向上下兩個方向同時發射激光,符號為 |;B 型炮臺:會向左右兩個方向同時發射激光,符號為…

【android bluetooth 案例分析 03】【PTS 測試 】【PBAP/PCE/SSM/BV-02-C】

1. 測試介紹 PBAP/PCE/SSM/BV-02-C [PCE Closes a PBAP Session] 1. Test Purpose Verify that the PCE can terminate a PBAP session. 2. Initial Condition IUT: The IUT is engaged in a PBAP session with the Lower Tester.Lower Tester: The Lower Tester is engag…

ArcGIS:開啟洪水災害普查、評估與制圖新征程

技術點目錄 一、洪水普查技術規范解讀二、ArcGIS介紹及數據管理三、空間數據的轉換與處理四、洪水淹沒專題地圖制作五、矢量數據的采集與處理六、柵格數據的下載與處理七、ArcGIS水文分析八、ArcGIS洪水分析九、ArcGIS淹沒分析了解更多 ———————————————————…

【系統參數合法性校驗】spring-boot-starter-validation

JSR303校驗 統一校驗的需求 前端請求后端接口傳輸參數,是在controller中校驗還是在Service中校驗? 答案是都需要校驗,只是分工不同。 Contoller中校驗請求參數的合法性,包括:必填項校驗,數據格式校驗&…

[零基礎]內網ubuntu映射到云服務器上,http訪問(frp內網穿透)

阿里云服務器,高校教師可以半價, frp下載地址:https://github.com/fatedier/frp/releases,選amd64, 云服務器開放端口 選擇網絡與安全–>安全組->管理規則 配置開放端口,7000為支持frp開放的端口&…

第十六屆藍橋杯 2025 C/C++組 破解信息

目錄 題目: 題目描述: 題目鏈接: 思路: 思路詳解: 代碼: 代碼詳解: 題目: 題目描述: 題目鏈接: P12344 [藍橋杯 2025 省 B/Python B 第二場] 破解信息…

OpenAI Embedding 和密集檢索(如 BERT/DPR)進行語義相似度搜索有什么區別和聯系

OpenAI Embedding 和密集檢索(如 BERT/DPR)其實是“同一種思想的不同實現”,它們都屬于Dense Retrieval(密集向量檢索),只不過使用的模型、部署方式和調用方式不同。 🧠 首先搞清楚:…

Linux電源管理(3)_關機和重啟的過程

原文:Linux電源管理(3)_Generic PM之重新啟動過程 1.前言 在使用計算機的過程中,關機和重啟是最先學會的兩個操作。同樣,這兩個操作在Linux中也存在,可以關機和重啟。這就是這里要描述的對象。在Linux Ke…

C# 繼承詳解

繼承是面向對象程序設計(OOP)中的核心概念之一,它極大地增強了代碼的重用性、擴展性和維護性。本篇文章將詳細講解C#中的繼承機制,包括基礎概念、語法特法、多重繼承(通過接口實現)、繼承的規則和實際應用示…

SQLAlchemy 2.x 異步查詢方法比較

SQLAlchemy 2.x 異步查詢中常用的 結果處理方法速查表,包含方法說明、使用場景、返回類型及典型用途。 SQLAlchemy 查詢結果處理方法速查表(適用于 AsyncSession) 方法 說明 返回類型 示例 SQL 示例輸出 scalars().all() 獲取單列所有…

極客天成參與”AI助力智慧城市構建”主題演講暨招商引智專題推介活動

4月7日下午,北京極客天成科技有限公司參加了天津市河東區數據局舉辦的“AI賦能智慧城市構建”主題演講暨招商引智專題推介活動。 活動中,華為(天津)有限公司數字政府解決方案總監姜華庚圍繞“政務大模型賦能智慧城市建設”&#x…

理解 EKS CloudWatch Pod CPU Utilization 指標:與 `kubectl top` 及節點 CPU 的關系

在使用 AWS EKS 時,CloudWatch Container Insights 提供了豐富的容器級別監控指標,幫助我們深入了解應用的運行狀態。如下截圖中的 ContainerInsights pod_cpu_utilization 指標就是一個非常重要的維度。本文將詳細解釋這個指標的含義,并將其…

使用pip3安裝軟件包報錯`externally-managed-environment`的幾種解決方式

1、pip3安裝軟件包報錯 報錯externally-managed-environment的原因: 從 Python 3.11 開始引入了 PEP 668 規范,該規范限制了在系統級 Python 環境中使用 pip 安裝第三方包,以避免與系統包管理器(如 apt)產生沖突。 如…

spring security用戶退出

Spring security默認實現了用戶退出的功能,用戶退出主要考慮退出后會話如何管理以及跳轉到哪個頁面。HttpSecurity類提供了logout()方法開啟退出登錄的支持,默認觸發用戶退出操作的URL為“/logout”,用戶退出時同時也會清除Session等默認用戶…

愛普生SG2520HHN晶振數據中心服務器的理想解決方案

在當今數字化時代,數據中心作為海量數據存儲、處理與傳輸的核心樞紐,其服務器的高效穩定運行至關重要。服務器作為其核心設備,對時鐘信號的精度和穩定性提出了嚴苛要求——微小的時序誤差可能導致數據傳輸失敗或系統宕機。愛普生 SG2520HHN 差…

LeetCode 155題解 | 最小棧

最小棧 一、題目鏈接二、題目三、算法原理思路1:用一個變量存儲最小元素思路2:雙棧普通棧和最小棧 四、編寫代碼五、時間復雜度 一、題目鏈接 最小棧 二、題目 三、算法原理 棧用數組、鏈表實現都行,最主要的就是在能在常數時間內檢索到最…