部署項目頻繁掉線-----Java 進程在云服務器內存不足被 OOM Killer 頻繁殺死-----如何解決?

一、查詢系統日志

grep -i "java" /var/log/messages

執行這條命令,檢查系統日志里是否有 Java 進程被 OOM Killer 殺死的記錄。

日志中反復出現以下內容:

Out of memory: Killed process 3679325 (java) total-vm:2947000kB, anon-rss:406604kB...?

Out of memory: Killed process:明確表示 Java 進程因內存不足被系統強制終止;
total-vm:進程申請的虛擬內存總量(約 2.9GB);
anon-rss:進程實際使用的物理內存(約 400MB 左右);
UID:0:以 root 用戶運行,權限足夠但內存仍不足。?

問題根源:

你的服務器總內存只有?1.8Gifree -h?結果),而:

  1. Java 進程內存需求高:即使單個 Java 進程實際占用~400MB 物理內存,但虛擬內存申請量高達~2.9GB,疊加系統其他進程(如內核、SSH、日志服務等),總內存會被快速耗盡;
  2. 無 Swap 分區free -h?顯示?Swap: 0B,內存不足時無法通過交換空間緩解,系統只能直接殺死進程。

解決方案:

1.?緊急緩解:添加 Swap 分區

臨時創建 Swap 文件,讓系統內存不足時有緩沖空間(避免頻繁 OOM 殺進程):?

# 1. 創建 1GB Swap 文件(根據實際情況調整大小,如 2G 則改為 count=2048)
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024# 2. 設置文件權限(安全必須)
sudo chmod 600 /swapfile# 3. 格式化 Swap 文件
sudo mkswap /swapfile# 4. 啟用 Swap
sudo swapon /swapfile# 5. 設置開機自動掛載(避免重啟后失效)
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

驗證:執行 free -h,看到 Swap 行有值(如 1.0Gi)則成功。

?

二、內存使用情況分析(free -h 結果)?

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

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

相關文章

【保姆級教程】基于anji-plus-captcha實現行為驗證碼(滑動拼圖+點選文字),前后端完整代碼奉上!

前言 驗證碼作為Web應用的第一道安全防線,其重要性不言而喻。但你是否還在為以下問題煩惱: 傳統字符驗證碼用戶體驗差,識別率低?驗證碼安全性不足,輕易被爬蟲破解?前后端對接繁瑣,集成效率低&…

HTML-八股

1、DOM和BOM DOM是表示HTML或者XML文檔的標準的對象模型,將文檔中每個組件(元素、屬性等)都作為一個對象,使用JS來操作這個對象,從而動態改變頁面內容,結合等。 DOM是以樹型結構組織文檔內容,樹…

ADI的EV-21569-SOM核心板和主板轉接卡的鏈接說明

ADI提供給客戶很多DSP的核心板,比如EV-21569-SOM,EV-21593-SOM,EV-SC594-SOM等,非常多,但是沒有底板,光一個核心板怎么用呢?于是我就在想,我的21569評估板就有通用底板,能…

基于 Redisson 實現分布式系統下的接口限流

在高并發場景下,接口限流是保障系統穩定性的重要手段。常見的限流算法有漏桶算法、令牌桶算法等,而單機模式的限流方案在分布式集群環境下往往失效。本文將介紹如何利用 Redisson 結合 Redis 實現分布式環境下的接口限流,確保集群中所有節點的…

ubuntu播放rosbag包(可鼠標交互)

1 前言 眾所周知,ubuntu中播放bag包最主要的工具是rviz,然而rviz有一個無法忍受的缺陷就是不支持鼠標回滾,并且顯示的時間的ros時間,不是世界時間,因此在遇到相關bug時不能與對應的世界時間對應。基于以上&#xff0c…

一文理解緩存的本質:分層架構、原理對比與實戰精粹

📖 推薦閱讀:《Yocto項目實戰教程:高效定制嵌入式Linux系統》 🎥 更多學習視頻請關注 B 站:嵌入式Jerry 一文理解緩存的本質:分層架構、原理對比與實戰精粹 “緩存讓系統飛起來”——但每一層緩存有何不同?…

【離線數倉項目】——電商域DIM層開發實戰

摘要本文主要介紹了電商域離線數倉項目中DIM層的開發實戰。首先闡述了DIM層的簡介、作用、設計特征、典型維度分類以及交易支付場景下的表示例和客戶維度表設計。接著介紹了DIM層設計規范,包括表結構設計規范、數據處理規范以及常見要求規范。然后詳細講解了DIM層的…

Unreal Engine 自動設置圖像

void UYtGameSettingSubsystem::RunHardwareBenchmark(int32 WorkScale, float CPUMultiplier, float GPUMultiplier) {UGameUserSettings* UserSettings UGameUserSettings::GetGameUserSettings();if (UserSettings){// 運行基準測試(異步操作,可能需…

使用Spring Boot和PageHelper實現數據分頁

在Spring Boot項目中&#xff0c;利用PageHelper插件可以輕松實現數據分頁功能。以下是具體的實現步驟和代碼示例。添加依賴在項目的pom.xml文件中添加PageHelper和MyBatis的依賴。<dependency><groupId>com.github.pagehelper</groupId><artifactId>p…

【IT-Infra】從ITIL到CMDB,配置管理,資產管理,物理機與設備管理(含Infra系列說明)

【IT-Infra】從ITIL到CMDB&#xff0c;配置管理&#xff0c;資產管理&#xff0c;物理機與設備管理&#xff08;含Infra系列說明&#xff09; 文章目錄序&#xff1a;Infra系列說明1、ITIL 信息技術基礎架構庫&#xff08;起源&#xff09;2、CMDB 配置管理數據庫&#xff08;I…

vue使用printJS實現批量打印及單個打印 避免空白頁

本文介紹了使用print-js庫實現批量打印功能的實現方法。通過安裝print-js依賴后,創建一個batchPrintAction方法,該方法接收選中行數據,生成包含多個標簽頁的HTML字符串。每個標簽頁以表格形式展示6個數據字段,并設置了80mm50mm的標簽尺寸。方法使用PrintJS進行打印,配置了…

C++ 選擇排序、冒泡排序、插入排序

選擇排序&#xff1a;是一種簡單直觀的排序算法&#xff0c;每次均是選擇最小&#xff08;大&#xff09;的元素進行排序。選擇排序算法思想&#xff1a;1 在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置2 再從剩余未排序元素中繼…

Linux入門篇學習——Linux 編寫第一個自己的命令,make 工具和 makefile 文件

目錄 一、Linux 編寫第一個自己的命令 1.命令的概念 2.定義一個自己的命令 二、make 工具和 makefile 文件 1.使用 make 工具 2.makefile文件 一、Linux 編寫第一個自己的命令 1.命令的概念 命令就是可執行程序。 比如說我們輸入 ls -al &#xff0c;ls 就是可執行程序的…

實驗一 接蘋果

主要步驟蘋果樹制作&#xff08;蘋果與籃子的制作同理&#xff09;為蘋果添加標簽相機位置設置與游戲面板長寬比設置&#xff08;16:9&#xff09;蘋果下落設置&#xff08;將蘋果從平拋運動改為垂直下落&#xff09;通過設置物理圖層并更改碰撞矩陣表實現通過PlayerPrefs實現游…

Nginx服務器集群:橫向擴展與集群解決方案

橫向擴展&#xff1a;基礎概念 在深入了解Nginx的橫向擴展細節之前&#xff0c;首先理解橫向擴展的含義及其重要性。橫向擴展是指通過增加服務器數量來分散負載并提升整體性能。這與縱向擴展形成對比&#xff0c;縱向擴展是指在單個服務器上增加更多資源&#xff08;如CPU、內…

缺陷的生命周期(Bug Life Cycle)是什么?

一、缺陷生命周期的定義缺陷生命周期是指一個Bug從被發現到最終關閉的完整流程&#xff0c;反映了缺陷在不同角色&#xff08;測試、開發、產品等&#xff09;間的流轉狀態。它是軟件測試流程的核心管理模型&#xff0c;直接影響團隊協作效率。二、標準缺陷生命周期階段以下是通…

AtCoder Beginner Contest 333(A,B,C,D,E,F)

AtCoder Beginner Contest 333 A 題意 輸出n個n(n<9) 代碼 #include<bits/stdc.h> using namespace std; void solve(){int n;cin>>n;for(int i1;i<n;i)cout<<n; } signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T__1;//cin…

留學真相:凌晨兩點被海關攔下時,我才明白人生沒有退路

> 獨立不是選擇&#xff0c;而是生存的必修課下飛機那一刻&#xff0c;幻想中的“鍍金生活”瞬間崩塌。倫敦海關凌晨兩點的燈光下&#xff0c;你顫抖著翻找學校文件&#xff0c;手機信號格空空如也&#xff1b;大巴誤點后&#xff0c;你拖著兩個32公斤的行李箱站在陰雨中&am…

探索AIGC領域DALL·E 2的圖像生成與人類創意的融合

探索AIGC領域DALLE 2的圖像生成與人類創意的融合關鍵詞&#xff1a;AIGC、DALLE 2、圖像生成、人類創意、創意融合摘要&#xff1a;本文聚焦于AIGC領域中DALLE 2的圖像生成技術與人類創意的融合。首先介紹了相關背景&#xff0c;包括DALLE 2的發展歷程和人類創意在藝術創作中的…

【ECharts】多個ECharts版本共存解決方案

多個ECharts版本共存解決方案 在單個HTML頁面中使用多個ECharts版本的關鍵在于避免全局命名空間沖突。下面我將展示一個完整的解決方案&#xff0c;包含兩種不同的實現方法。 解決方案思路命名空間隔離法&#xff1a; 使用不同的全局變量名保存不同版本的ECharts在加載新版本前…