java微服務-linux單機CPU接近100%優化

你這個場景:

  • 4核16G 機器

  • 同時運行了 8個 Spring Boot 微服務,每個 JAR 文件 100多 MB

  • 導致 CPU 接近100%

確實是一個常見但資源緊繃的部署情境。下面是分層的優化建議,包括 JVM、系統、服務架構等多個方面,幫助你 降 CPU、穩運行、可擴展


? 一圖總覽優化路徑(建議按優先級依次考慮)

1. JVM調優      ← 性價比最高,立即可做
2. 服務精簡      ← 觀察是否可合并、拆分、延遲加載
3. 資源隔離      ← 多臺部署 or Docker 限制 CPU
4. 異步處理      ← 避免阻塞線程 / 提升吞吐
5. 網關限流      ← Sentinel / RateLimiter
6. 數據訪問優化  ← 減少CPU頻繁IO調度(N+1、慢SQL)
7. 使用輕量框架  ← Spring Boot 可改 Quarkus、Vert.x(可選)

🧠 1. JVM 資源限制與調優(強烈推薦)

默認 Spring Boot 啟動會吃滿所有 CPU(ForkJoinPool)

你可以通過這些方式限制每個服務的 最大線程數和內存分配

? 啟動命令中限制資源
java -Xms256m -Xmx512m -XX:MaxDirectMemorySize=256m \-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \-Dreactor.netty.ioWorkerCount=2 \-Dreactor.netty.pool.maxConnections=200 \-jar your-service.jar
  • -Xmx512m:最大堆內存

  • -Dreactor.netty.ioWorkerCount=2:Netty I/O 線程不要用太多(默認是 CPU 核心數 × 2)

建議: 4核跑8個服務,每個服務限制在 Xmx=512m + 限制線程數,內存/CPU都夠用。


🔍 2. 診斷服務本身是否“CPU忙”

你可以通過 tophtop 查看是哪個進程 CPU 占用高。

查看哪個線程高CPU:

top -H -p <PID>

如果你看到某個線程 100%,可以用:

jstack <PID> > stack.log

然后查一下那個線程做了什么(比如死循環、無限IO)。


🧩 3. 微服務精簡 / 合并

檢查是否真的需要同時部署 8 個微服務?

  • 是否可以合并一些低頻服務?

  • 是否某些服務可以“按需啟動”?(定時任務類服務只在后臺跑)


🛡 4. 限流 + 異步處理

  • 使用 Sentinel / Resilience4j 為微服務加限流保護,防止互相拖垮

  • 盡量使用 異步調用、消息隊列 替代同步調用,減少線程阻塞


🐳 5. Docker / 多臺部署 / K8s 資源隔離(進階)

如果你部署在裸機或一臺云主機上,CPU資源全部搶占

可以考慮:

  • Docker + cgroup 限制每個服務的 CPU:

docker run --cpus="0.5" -m 512m your-service
  • 或者拆成兩臺機器部署服務,避免全部擠在一臺機器上。


🧾 6. 查看服務是否有以下常見“吃CPU”的陷阱

問題類型現象處理方式
定時任務過密每秒跑一次、空跑減少頻率,使用分布式調度中心
死循環 / 無限遞歸單線程CPU 100%jstack 定位代碼問題
Netty線程爆滿非阻塞過多請求并發限流、拆流
SQL慢/頻繁數據訪問CPU上下文切換多SQL優化、批量處理
消息隊列處理卡死消費者阻塞+任務堆積限制隊列消費線程、監控

? 實操建議匯總

優化點命令/配置
限制堆內存-Xms256m -Xmx512m
限制Netty線程-Dreactor.netty.ioWorkerCount=2
診斷高CPU線程top -H -p <pid> + jstack
啟動時限CPU使用Docker:--cpus="0.5"
限制Spring線程池大小配置 TaskExecutor / WebFlux 線程池
異步消息化替代同步RabbitMQ/Kafka/Redis Stream
合并服務/延遲啟動拆層或使用功能插件

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

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

相關文章

MySQL表的約束和基本查詢

一.表的約束 1.1空屬性 當我們填寫問卷的時候,經常會有不允許為空的問題,比如電話號,姓名等等.而mysql上我們可以在創建表的時候,如果想要某一列不允許為空,可以加上not null來加以限制: mysql> create table myclass( -> class_name varchar(20) not null, -> cla…

VBA代碼解決方案第二十六講:如何新建EXCEL工作簿文件

《VBA代碼解決方案》(版權10028096)這套教程是我最早推出的教程&#xff0c;目前已經是第三版修訂了。這套教程定位于入門后的提高&#xff0c;在學習這套教程過程中&#xff0c;側重點是要理解及掌握我的“積木編程”思想。要靈活運用教程中的實例像搭積木一樣把自己喜歡的代碼…

【unity游戲開發——網絡】套接字Socket的重要API

注意&#xff1a;考慮到熱更新的內容比較多&#xff0c;我將熱更新的內容分開&#xff0c;并全部整合放在【unity游戲開發——網絡】專欄里&#xff0c;感興趣的小伙伴可以前往逐一查看學習。 文章目錄 1、Socket套接字的作用2、Socket類型與創建3、核心屬性速查表4、關鍵方法指…

計算機網絡(二)應用層HTTP協議

目錄 1、HTTP概念 ?編輯2、工作流程?? 3、HTTP vs HTTPS?? 4、HTTP請求特征總結? 5、持久性和非持久性連接 非持久連接&#xff08;HTTP/1.0&#xff09;?? ??持久連接&#xff08;HTTP/1.1&#xff09;?? 1、HTTP概念 HTTP&#xff08;HyperText Transfer …

c# IO密集型與CPU密集型任務詳解,以及在異步編程中的使用示例

文章目錄 IO密集型與CPU密集型任務詳解&#xff08;C#示例&#xff09;一、基本概念1. IO密集型任務2. CPU密集型任務 二、C#示例1. IO密集型示例1.1 文件操作異步示例1.2 網絡請求異步示例1.3 數據庫操作異步示例 2. CPU密集型示例2.1 基本CPU密集型異步處理2.2 并行處理CPU密…

用lines_gauss的width屬性提取缺陷

自己做了一個圖&#xff0c;這個圖放在資源里了 結果圖是這樣&#xff08;這里只結算了窄區&#xff09; 代碼和備注如下 read_image (Image11, C:/Users/Administrator/Desktop/分享/15/11.png) rgb1_to_gray (Image11, GrayImage) invert_image (GrayImage, ImageInvert) thr…

從0到100:房產中介小程序開發筆記(中)

背景調研 為中介帶來諸多優勢&#xff0c;能借助它打造專屬小程序&#xff0c;方便及時更新核實租賃信息&#xff0c;確保信息準確無誤&#xff0c;像房屋的大致地址、租金數額、租賃條件、房源優缺點等關鍵信息都能清晰呈現。還可上傳房屋拍攝照片&#xff0c;這樣用戶能提前…

【AI 時代的網絡爬蟲新形態與防護思路研究】

網絡爬蟲原理與攻擊防護的深度研究報告 網絡爬蟲技術已進入AI驅動的4.0時代&#xff0c;全球自動化請求流量占比突破51%&#xff0c;傳統防御手段在面對高度仿真的AI爬蟲時已顯疲態。基于2025年最新數據&#xff0c;深入剖析網絡爬蟲的基本原理、工作流程、分類與攻擊方式&…

低代碼平臺架構設計與關鍵組件

低代碼平臺的架構設計是其核心能力的關鍵支撐&#xff0c;需要平衡可視化開發的便捷性、生成應用的健壯性與性能、可擴展性以及企業級需求&#xff08;如安全、多租戶、集成&#xff09;。以下是一個典型的企業級低代碼平臺架構概覽及其關鍵組件&#xff1a; https://example.…

電商 ERP 系統集成接口指南

電商 ERP 系統的高效運行依賴于與多個業務系統的無縫對接&#xff0c;需要集成的核心接口包括&#xff1a;商品管理、訂單處理、庫存同步、物流配送、客戶管理、財務結算等。這些接口是實現數據互通、業務協同的關鍵橋梁。 一、電商 ERP 系統集成所需接口類型 &#xff08;一…

Python實現對WPS協作群進行群消息自動推送

前言 本文是該專欄的第59篇,后面會持續分享python的各種干貨知識,值得關注。 相信有些同學在工作或者項目中,都會使用到“WPS協作”作為辦公聊天軟件。如果說,有些項目的監控預警正好需要你同步到WPS協作群,這個時候需要怎么去做呢? 而本文,筆者將基于WPS協作,通過Py…

js嚴格模式和非嚴格模式

好的&#xff0c;這是一個非常基礎且重要的概念。我們來詳細解析一下 JavaScript 中的嚴格模式&#xff08;Strict Mode&#xff09;和非嚴格模式&#xff08;Sloppy Mode&#xff09;。 可以把它想象成參加一場考試&#xff1a; 非嚴格模式&#xff1a;就像是開卷、不計時的…

板凳-------Mysql cookbook學習 (十一--------1)

第11章&#xff1a;生成和使用序列 11.0 引言 11.1 創建一個序列列并生成序列值 CREATE TABLE insect ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)&#xff0c;name VARCHAR(30) NOT NULL,date DATE NOT NULL,origin VARCHAR(30) NOT NULL); 字段說明 ?id…

Vue3 中 Excel 導出的性能優化與實戰指南

文章目錄 Vue3 中 Excel 導出的性能優化與實戰指南引言&#xff1a;為什么你的導出功能會卡死瀏覽器&#xff1f;一、前端導出方案深度剖析1.1 xlsx (SheetJS) - 輕量級冠軍1.2 exceljs - 功能強大的重量級選手 二、后端導出方案&#xff1a;大數據處理的救星2.1 為什么大數據需…

安卓RecyclerView實現3D滑動輪播效果全流程實戰

安卓RecyclerView實現3D滑動輪播效果全流程實戰 1. 前言 作為一名學習安卓的人,在接觸之前和之后兩種完全不同的想法: 好看和怎么實現 當初接觸到RecyclerView就覺得這個控件就可以把關于列表的所有UI實現,即便不能,也是功能十分強大 放在現在依然是應用最廣的滑動列表控…

電機控制——電機位置傳感器零位標定

在有感FOC算法中電機位置是一個重要的輸入&#xff0c;電機位置傳感器的作用就是測量電機的旋轉角度&#xff0c;通常是輸出sin(Theta)和cos(Theta)兩路模擬信號&#xff0c;根據這兩路模擬信號測得電機旋轉絕對角度。注意傳感器測量的是機械角度&#xff0c;不是電角度。 關于…

生物化學(實驗流程) PCR聚合酶鏈式反應: DNA 凝膠電泳實驗原理 實驗流程方法 實操建議筆記

凝膠電泳是分子生物學中最常用的技術之一&#xff0c;廣泛用于 DNA 片段的可視化、分離與識別。在獲取DNA 凝膠電泳相關設備&#xff08;電泳設備 & DNA樣品染料 & 凝膠 & 染料&#xff09;之后&#xff0c;可以考慮進行電泳操作。 整體電泳操作流程&#xff08;從…

Python應用指南:利用高德地圖API獲取公交+地鐵可達圈(三)

副標題&#xff1a;基于模型構建器的批處理多份CSV轉換為點、線、面圖層 在地理信息系統&#xff08;GIS&#xff09;的實際應用中&#xff0c;我們經常需要處理大量以表格形式存儲的數據&#xff0c;例如人口統計數據、興趣點&#xff08;POI&#xff09;信息和監測站點記錄等…

每日算法刷題Day38 6.25:leetcode前綴和3道題,用時1h40min

5. 1749.任意子數組和的絕對值的最大值(中等,學習) 1749. 任意子數組和的絕對值的最大值 - 力扣&#xff08;LeetCode&#xff09; 思想 1.給你一個整數數組 nums 。一個子數組 [numsl, numsl1, ..., numsr-1, numsr] 的 和的絕對值 為 abs(numsl numsl1 ... numsr-1 nu…

創客匠人視角下創始人 IP 打造的底層邏輯與實踐路徑

在知識付費行業蓬勃發展的當下&#xff0c;創始人 IP 已成為連接用戶與商業價值的核心紐帶。創客匠人創始人老蔣在與行業頭部 IP 洪鑫的對話中揭示了一個關鍵命題&#xff1a;IP 打造的成敗&#xff0c;始于發心與理念的根基。從洪鑫教育中心營收超 6000 萬的案例來看&#xff…