当前位置: 首页 > news >正文

jdk8u201版本cpu.load过高问题的排查和解决

文章目录

      • 1、背景
      • 2、现象
      • 3、排查定位
      • 4、原因总结
      • 5、解决

1、背景

jdk8u45版本存在安全漏洞,性能问题。需要升级到8u201

2、现象

升级到201版本后,出现cpu.load过高

3、排查定位

  • 使用压测工具压测时,cpu.load过高问题必现,确认是非偶发问题

  • 使用Top命令查找占用cpu高的进程id

  • 使用strace命令跟踪到此进程id产生的系统调用情况

    • (strace -p $(ps -ef | grep HetaspaceSize | awk ‘NR==1 {print $2}’) -f -c)10
    • 发现syscall指标下有大量的mmap、mumap方法调用
  • 使用Gdb命令查看代堆栈的信息,发现JVM中 ActiveProcessorCount()函数调用了mmap

  • 手动配置-XX:ActiveProcessorCount=8(配置此参数后,发现占用CPU高的进程消失同时mmap和mumap的调用量也恢复正常

  • 故查看jdk 201版本源码中哪儿使用了ActiveProcessorCount参数。发现:

    • 201为了支持容器功能,对cpu核数的取数逻辑进行了改动。新逻辑为

      if(ActiveProcessorCount > 0){// 默认不会配置这个参数return ActiveProcessorCount;
      }
      // 否则调用fgets函数库,此函数内部使用mmap分配buffer,高频的调用时会导致cpu.load高
      
  • 开始排查业务代码中,哪里会用到查询cpu核数的逻辑

    • 发现出现load过高的服务,基本都是QPS较高的业务,对外提供QPS较高的rpc接口(内部大量 CompletableFuture异步调用下游不同服务获取不同数据,并最后CompletableFuture.join()等待异步结果返回,再组装所有数据返回)

    • 发现join()内部会调用waitingGet获取cpu核数

      Runtine.getRuntime().availableProcssors()
      
  • 至此问题彻底定位。

4、原因总结

  • 升级版本到201的服务中,有大量使用CompletableFuture.join()
  • join中waitingGet方法会调用Runtine,getRuntime().availableProcessors()获取cpu核数
  • 当JVM未配置ActiveProcessorCount参数,201版本会调用fgets()库函数。
  • 其内部使用mmap申请buffer,当频繁的join -> 频繁的获取cpu核数->频繁的调用mmap和mumap时,会导致cpu.load过高

5、解决

JVM参数指定 -XX:ActivtProcessorCount -n (这里的n为机器的核数)

  • 这样当join() -> 获取cpu核数 -> XX:ActivtProcessorCount >0,则直接返回XX:ActivtProcessorCount = n的值
  • j就不会再调用fgets函数库,自然不会调用mmap分配buffer,从而避免了高频的调用导致cpu.load过高

相关文章:

jdk8u201版本cpu.load过高问题的排查和解决

文章目录 1、背景2、现象3、排查定位4、原因总结5、解决 1、背景 jdk8u45版本存在安全漏洞,性能问题。需要升级到8u201 2、现象 升级到201版本后,出现cpu.load过高 3、排查定位 使用压测工具压测时,cpu.load过高问题必现,确认…...

【计算机网络笔记】数据交换之报文交换和分组交换

系列文章目录报文交换分组交换存储-转发报文交换 vs 分组交换总结 系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 报文交换 报文:源(应用)发送的信息整体。比如一个文件、一…...

【广州华锐互动】利用VR开展细胞基础实验教学有什么好处?

在科技发展的驱动下,虚拟现实(VR)技术已被广泛应用于各个领域,包括教育和医学。尤其是在医学教育中,VR技术已成为一种革新传统教学模式的有效工具。本文将探讨使用VR进行细胞基础实验教学的优势。 首先,VR技…...

基于SSM+Vue的咖啡销售系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

L2-026 小字辈

本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,…...

linux 查看系统版本

命令:lsb_release -a 可能遇到的问题: 问题1: 报错:command not found: lsb_release原因:系统没有安装 lsb_release解决方案:sudo apt-get install lsb-release 问题2: 报错: Tra…...

Python实现PDF转换文件格式

最近工作中经常遇到收到其他人提供的pdf文档,想要编辑修改下或者复制部分内容比较困难,想通过现有的pdf工具软件转换文档格式,基本都要充钱,为了免费实现pdf转换工具,网上查了下相关技术方案,整理了下代码&…...

【Ceph Cluster】完全删除Ceph集群

注意:在执行这些步骤之前,请确保你已经备份了所有重要的数据,并且你明白这些步骤将永久删除 Ceph 集群。 停止 Ceph 服务: systemctl stop ceph.target卸载 Ceph 包:卸载 Ceph 相关的软件包,使用你的 Linux…...

4.Vue-Vue调用第三方接口

题记 用vue调用第三方接口,以下是全部代码和操作流程。 寻找第三方接口网站 推荐:免费API - 提供免费接口调用平台 (aa1.cn) 下面的代码以下图中的接口为例 安装axios模块 在终端输入以下命令: npm install axios 调用第三方接口代码 调…...

大语言模型在推荐系统的实践应用

本文从应用视角出发,尝试把大语言模型中的一些长处放在推荐系统中。 01 背景和问题 传统的推荐模型网络参数效果较小(不包括embedding参数),训练和推理的时间、空间开销较小,也能充分利用用户-物品的协同信号。但是它的缺陷是只能利用数据…...

第三章 交换技术及应用

目录 3.1 port-vlan技术 3.1.1 VLAN概述 3.1.2 VLAN划分方法——Port-VLAN 3.1.3 Port-VLAN工作原理 3.1.3 Port-VLAN配置 3.2 port-vlan仿真演示 3.2.1 实验背景 3.2.2 实验目的 3.2.3 实验设备 3.2.4 实验步骤思维导图 3.3 tag-vlan技术 3.3.1 问题分析 3.3.2 T…...

地震勘探原理部分问题解答

1、二维/三维(陆地/海洋)地震勘探,炮点(激发点)和检波点(接收点)的排布位置如何?画图作答? (1)陆地地震勘探 二维陆地地震野外采集:震…...

两个步骤轻松搞定批量合并视频

你是否曾经有过批量合并视频的需求,但是却苦于不知道如何下手?今天,我将为你介绍一个简单易行的方法,只需两个步骤,让你轻松实现批量合并视频。 第一步:下载并打开固乔智剪软件 首先,你需要下载…...

VR虚拟现实在室内设计仿真教学中的应用演示

1. 虚拟实景漫游:利用VR技术,学生可以通过戴上VR头盔来进入一个虚拟的室内环境中,感受真实的空间氛围。他们可以自由移动和观察,感受室内设计的效果。这样的体验可以增强学生的想象力和空间感知能力,提高他们的设计水平…...

Python操作串口通信

Python操作串口通信 注意Linux下先要修改串口的权限: sudo chmod 777 /dev/ttyUSB0 以下是python代码: # codingutf-8 # 包:pyserial,pymysql # 权限:sudo chmod 777 /dev/ttyUSB0 import serial # import pymysql …...

图详解第四篇:单源最短路径--Dijkstra算法

文章目录 1. 最短路径问题2. 单源最短路径--Dijkstra算法算法思想图解如何存储路径及其权值代码实现调式观察打印最短路径Dijkstra算法的缺陷 3. 源码 1. 最短路径问题 最短路径问题: 从带权有向图(求最短路径通常是有向图)G中的某一顶点出发…...

CRMEB多商户商城系统阿里云集群部署教程

注意: 1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区 2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示 一、 创建容器镜像服务,容器镜像服务(aliyun.com) ,个人版本就可以 先创建一个命名空间 然后创建一个镜像仓库 查看并记录镜像公网地址…...

Java第三方登录封装工具类

Java中可以使用第三方登录来简化用户登录流程,常见的第三方登录如QQ、微信、微博等。下面是一个Java封装第三方登录的工具类: import java.io.IOException; import java.util.HashMap; import java.util.Map;import org.apache.http.client.ClientProto…...

BUUCTF学习(四): 文件包含tips

1、介绍 2、hackBar插件安装 教程: Hackbar插件安装-CSDN博客 3、解题 php://filter/readconvert.base64-encode/resource要读取的文件 ?filephp://filter/readconvert.base64-encode/resourceflag.php Base64 在线编码解码 | Base64 加密解密 - Base64.us 结束...

德国人工智能公司【Kodex AI】完成160万欧元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于德国柏林的人工智能公司【Kodex AI】今日宣布已完成160万欧元融资。 本轮融资由Signals VC领投,Techstars、德意志银行等天使投资者参与,其中包括:most AI首席执行官…...

Wand-Enhancer完整指南:如何安全增强WeMod用户体验的终极方案

Wand-Enhancer完整指南:如何安全增强WeMod用户体验的终极方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer Wand-Enhancer是一款专为WeMod…...

TensorFlow开发中用到的一些第三方库

本节介绍下后面开发要用到的辅助库,并做一些简单的代码实例和效果演示,当然我们都是为了最终目标TensorFlow开发做准备的,用到的也是这些库的简单的api,这里做简单的介绍为后面TensorFlow开发做准备,对于这些库的深入研…...

心理医生哪家强?真实就诊指南+案例分享

行业痛点分析当前长沙心理诊疗领域面临多重技术挑战。数据显示,长沙市精神障碍患病率约为17.5%,其中焦虑、抑郁类障碍占比达62%,但实际就诊率不足30%。测试显示,三甲医院心理科平均排队时间超过45天,单次就诊时长不足1…...

k6:现代性能测试工具的新标杆

本人已经有几年不接触性能测试了,近些年一直是在从事功能和操作系统的自动化测试工作,现在回头看以前所专注的性能测试工具,感觉是有点跟不上时代了,在网上无意中发现一款比较火的工具k6,我也不知道这工具是哪年冒出来…...

解锁浏览器超能力:Greasy Fork用户脚本平台完全指南

解锁浏览器超能力:Greasy Fork用户脚本平台完全指南 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 认知启蒙:重新认识浏览器脚本的价值 还在为浏览器功能不足烦恼…...

AI赋能:让Kimi和DeepSeek在快马平台上帮你智能解决opencode安装难题

最近在折腾opencv的安装配置时,真是被各种依赖项和环境问题折磨得够呛。直到发现了InsCode(快马)平台的AI辅助开发功能,整个过程突然变得轻松多了。今天就想分享一下,如何用平台集成的Kimi和DeepSeek模型,打造一个智能化的opencv安…...

comsol三元锂离子电池模型 NCA111三元锂离子电池21700 电化学-热耦合模型 老化...

comsol三元锂离子电池模型 NCA111三元锂离子电池21700 电化学-热耦合模型 老化模型 容量衰减模型 参数已经设置好 自己更改参数即可进行使用学习 可进行多倍率充放电仿真 有对应参考文献 A17打开COMSOL看到电池仿真模型时,老玩家都知道参数调教才是灵魂。今天咱们来…...

为Cosmos-Reason1-7B开发自定义前端界面:Streamlit快速搭建

为Cosmos-Reason1-7B开发自定义前端界面:Streamlit快速搭建 你是不是已经部署好了Cosmos-Reason1-7B模型,但每次调用都得在命令行里敲代码,或者用那些不太顺手的脚本?想不想给你的模型加一个漂亮、好用,还能分享给别人…...

让任意窗口保持置顶:AlwaysOnTop提升Windows多任务效率全指南

让任意窗口保持置顶:AlwaysOnTop提升Windows多任务效率全指南 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在数字化工作环境中,我们经常需要同时处理多…...

BilibiliDown:跨平台B站视频下载器的完整使用指南

BilibiliDown:跨平台B站视频下载器的完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...