記錄一次因內存不足而導致hiveserver2和namenode進程宕機的排查

背景

最近發現集群主節點總有進程宕機,定位了大半天才找到原因,分享一下

排查過程

查詢hiveserver2和namenode日志,都是正常的,突然日志就不記錄了,直到我重啟之后又恢復工作了。

在這里插入圖片描述

排查各種日志都是正常的,直到查看Grafana,發現內存滿了

在這里插入圖片描述
在這個節點下已無內存資源可用,在服務宕掉的節點內存使用突然下降,猜測是linux內核的杰作,故查詢系統日志

grep "Out of memory" /var/log/messages

在這里插入圖片描述

果然存在因OOM被殺掉的進程

進程被殺的原因

Linux 內核有個機制叫OOM killer,全稱為 Out Of Memory killer,很形象的一個名字——內存溢出殺手,這個機制會監控那些占用內存過大,尤其是瞬間占用內存很快的進程,為防止機器內存耗盡而主動把該進程殺掉。

當內核檢測到系統內存不足、挑選并殺掉某個進程的過程可以參考內核源代碼 linux/mm/oom_kill.c(2023-4-4 23:24:07確認了此文件存在),當系統內存不足的時候,out_of_memory() 函數被觸發,然后調用 select_bad_process() 函數選擇一個進程殺掉,這個選擇的過程是通過調用 oom_badness() 函數實現的,挑選的算法和想法都暴力但樸實:就是找到最占用內存的進程。

出現問題的原因

最近剛剛增加了sentry和hivemetastore內存大小,導致機器內存不夠了。

解決方案

1.調整機器進程分布,確保機器不會出現內存超用
2.可以通過設置/proc/sys/vm/overcommit_memory為不同的值來調整OverCommit策略。

overcommit_memory可以取3個值:

  • 0:默認值,由Linux內核通過一些啟發式算法來決定是否超售和超售的大小,一般允許輕微的超售,拒絕一些明顯不可能提供的請求,同時做一些規則限制,比如不同用戶overcommit的大小也不一樣。
  • 1:允許,不做限制的超售,當然這個也不是無限大,還受到尋址空間的限制,32位系統最大可能只有4G,64位系統大概16T左右。
  • 2:禁止,禁止超售,系統能夠分配的內存不會超過swap+實際物理內存*overcommit_ratio,該值可以通過/proc/sys/vm/overcommit_ratio設置,默認50%。
vi /etc/sysctl.conf
-- 添加
vm.overcommit_memory=1
-- 重啟生效
sysctl -p

總結

如果你發現運行了一段時間的進程突然不見了,那可能是內核嫉妒生恨把它給干掉了
查詢內存溢出被殺掉的進程可以直接通過系統日志來查 grep “Out of memory” /var/log/messages
也可以通過專門的命令查找 dmesg -T | grep “Out of memory”

阿里P7數據技術專家,修改簡歷、模擬面試+vx:wodatoucai

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

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

相關文章

vue3 + vue-router + keep-alive緩存頁面

1.vue-router中增加mate.keepAlive和deepth屬性 {path: /,name: home,component: HomeView,meta: {// 當前頁面要不要緩存keepAlive: false,// 當前頁面層級deepth: 1,}},{path: /list,name: list,component: ListView,meta: {// 當前頁面要不要緩存keepAlive: true,// 當前頁…

代碼規范之-理解ESLint、Prettier、EditorConfig

前言 團隊多人協同開發項目,困擾團隊管理的一個很大的問題就是:無可避免地會出現每個開發者編碼習慣不同、代碼風格迥異,為了代碼高可用、可維護性,需要從項目管理上盡量統一和規范代碼。理想的方式需要在項目工程化方面&#xff…

Kafka官方生產者和消費者腳本簡單使用

問題 怎樣使用Kafka官方生產者和消費者腳本進行消費生產和消費?這里假設已經下載了kafka官方文件,并已經解壓. 生產者配置文件 producer_hr.properties bootstrap.servers10.xx.xx.xxx:9092,10.xx.xx.xxx:9092,10.xx.xx.xxx:9092 compression.typenone security.protocolS…

部署jekins遇到的問題

jdk問題 我用的jdk版本是21的結果版本太新了,啟動jekins服務的時候總是報錯最后在jekins的安裝目錄下面的jekinsErr.log查看日志發現是jdk問題最后換了一個17版本的就解決了。 unity和jekins jekins和Git源碼管理 jekins和Git聯動使用 我想讓jekins每次打包的時…

【css/vue】使用css變量,在同一個頁面根據不同情況改變字號等樣式

解決方法是&#xff1a;將 css 的屬性使用 v-bind 與 Vue 組件的屬性綁定&#xff0c;當組件的屬性變化時&#xff0c;css 對應的屬性值也就會隨之變化&#xff1b; 具體實現代碼&#xff1a; <template><div><span class"navTitle">標題名</s…

3D電路板在線渲染案例

從概念上講,這是有道理的,因為PCB印制電路板上的走線從一個連接到下一個連接的路線基本上是平面的。 然而,我們生活在一個 3 維世界中,能夠以這種方式可視化電路以及相應的組件,對于設計過程很有幫助。本文將介紹KiCad中基本的3D查看功能,以及如何使用NSDT 3DConvert在線…

Day38力扣打卡

打卡記錄 網格中的最小路徑代價&#xff08;動態規劃&#xff09; 鏈接 class Solution:def minPathCost(self, grid: List[List[int]], moveCost: List[List[int]]) -> int:m, n len(grid), len(grid[0])f [[0x3f3f3f3f3f] * n for _ in range(m)]f[0] grid[0]for i i…

【洛谷 B2010】帶余除法 題解(順序結構+四則運算)

帶余除法 題目描述 給定被除數和除數&#xff0c;求整數商及余數。此題中請使用默認的整除和取余運算&#xff0c;無需對結果進行任何特殊處理。 輸入格式 一行&#xff0c;包含兩個整數&#xff0c;依次為被除數和除數&#xff08;除數非零&#xff09;&#xff0c;中間用…

Sentinel 授權規則 (AuthorityRule)

Sentinel 是面向分布式、多語言異構化服務架構的流量治理組件&#xff0c;主要以流量為切入點&#xff0c;從流量路由、流量控制、流量整形、熔斷降級、系統自適應過載保護、熱點流量防護等多個維度來幫助開發者保障微服務的穩定性。 SpringbootDubboNacos 集成 Sentinel&…

一分鐘快速了解Python3.12新特性

Python 3.12&#xff0c;作為Python編程語言的最新穩定版&#xff0c;引入了一系列對語言和標準庫的改變&#xff0c;發布于2023年10月2日。重點變化包括&#xff1a; 新語法特性: PEP 695 引入類型形參語法和 type 語句&#xff0c;允許創建更明確的泛型類和函數。PEP 701 改進…

Unity 三維場景的搭建 軟件構造實驗報告

實驗2&#xff1a;仿真系統功能實現 1.實驗目的 &#xff08;1&#xff09;熟悉在Unity中設置仿真場景&#xff1b; &#xff08;2&#xff09;熟悉在Unity中C#語言的使用&#xff1b; &#xff08;3&#xff09;熟悉仿真功能的實現。 2.實驗內容 新建一個仿真場景&#x…

SpringBoot_websocket實戰

SpringBoot_websocket實戰 前言1.websocket入門1.1 websocket最小化配置1.1.1 后端配置1.1.2 前端配置 1.2 websocket使用sockjs1.2.1 后端配置1.2.2 前端配置 1.3 websocket使用stomp協議1.3.1 后端配置1.3.2 前端配置 2.websocket進階2.1 websocket與stomp有什么區別2.2 webs…

思維模型 重疊效應

本系列文章 主要是 分享 思維模型 &#xff0c;涉及各個領域&#xff0c;重在提升認知。相似內容易被混淆或遺忘。 1 重疊效應的應用 1.1 重疊效應在教育中的應用 1 通過避免重疊效應提升學習效率 為了避免重疊效應&#xff0c;通過對比、歸納等方法來幫助學生更好地理解和掌…

黑馬React18: Redux

黑馬React: Redux Date: November 19, 2023 Sum: Redux基礎、Redux工具、調試、美團案例 Redux介紹 Redux 是React最常用的集中狀態管理工具&#xff0c;類似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以獨立于框架運行 作用&#xff1a;通過集中管理的方式管…

VPS配置了swap沒發揮作用怎么辦

1 swap配置了但沒用上 我的服務器內存是2G&#xff0c;裝多一點東西就不夠用&#xff0c;于是我給他分配了2G的swap&#xff0c;等了幾小時&#xff0c;swap還是一點都沒有使用 Linux中Swap&#xff08;即&#xff1a;交換分區&#xff09;&#xff0c;類似于Windows的虛擬內存…

MongoDB的常用操作以及python連接MongoDB

一,MongoDB的啟動 mongod --dbpath..\data\db mongodb注意同時開兩個窗口&#xff0c;不要關&#xff01; 二, MongoDB的簡單使用 簡單介紹一下mongoDB中一些操作 show dbs: 顯示所有數據庫 show databases: 顯示所有數據庫 use xxxx: 使用指定數據庫/創建數據庫&#xff08…

Linux 與大型機 z/OS

大型機 國際商業機器公司&#xff08;International Business Machine Corporation&#xff09;&#xff0c;簡稱為 IBM&#xff0c;實際上是當今大型機的代名詞。作為大型企業技術解決方案提供商&#xff0c;IBM 在其漫長的生命周期中生產了各種產品。 他們的前身是計算、制表…

時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測

時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測 目錄 時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 1.Matlab實現BiLSTM-Adaboost…

【精選】Ajax技術知識點合集

Ajax技術詳解 Ajax簡介 Ajax 即“Asynchronous Javascript And XML”&#xff08;異步 JavaScript 和 XML&#xff09;&#xff0c;是指一種創建 交互式、快速動態應用的網頁開發技術&#xff0c;無需重新加載整個網頁的情況下&#xff0c;能夠更新頁面局 部數據的技術。通過在…

Scala如何寫一個通用的游戲數據爬蟲程序

以前想要獲取一些網站數據的時候&#xff0c;都是通過人工手動復制粘貼&#xff0c;這樣的效率及其低下。數據少無所謂&#xff0c;如果需要采集大量數據&#xff0c;手動就顯得乏力了。半夜睡不著&#xff0c;爬起來寫一段有關游戲商品數據的爬蟲通用模板&#xff0c;希望能幫…