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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…