Java服务器-Disruptor使用注意

最近看了一下部署后台的服务器状况,发现我的一个Java程序其占用的CPU时长超过100%,排查后发现竟是Disruptor引起的,让我们来看看究竟为什么Disruptor会有这样的表现。

发现占用CPU时间超过100%的进程

首先是在服务器上用top命令查看服务器状态,发现有一个应用程序占用的CPU时长超过100%,如图:

我根据进程号查了一下,发现是我的一个Java游戏后台服务,有一个CPU几乎被占满,因此继续排查究竟是什么代码导致了这种情况。

top -Hp 27538将这个进程的所有线程显示出来,按照CPU占用时间排序,看到了这个结果:

 

27658线程占用了近乎所有的CPU时间,而且一直都是,因此查看这个进程的详细信息。

jstack pid > pid.log命令将该进程的进程快照输出到一个文件中,下载下来。

 将27658转换为16进制0x6c0a后在线程快照中查询(因为线程快照中线程ID都是16进制存放,所以需要转换)

"disruptor-0" #27 prio=5 os_prio=0 tid=0x00007fa100c58000 nid=0x6c0a runnable [0x00007fa0ae080000]java.lang.Thread.State: RUNNABLEat com.lmax.disruptor.BusySpinWaitStrategy.waitFor(BusySpinWaitStrategy.java:39)at com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)at com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:159)at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125)at java.lang.Thread.run(Thread.java:748)

这是Disruptor的一个堆栈,为了更直观地查看线程的状态信息

分析Disruptor为何会占用整个CPU

根据上面快照的分析,实际是Disruptor的等待策略相关的线程所导致的,查看BusySpinWaitStrategy类,发现有相关说明

 * This strategy will use CPU resource to avoid syscalls which can introduce latency jitter.  It is best* used when threads can be bound to specific CPU cores.

现在终于知道了,原来是因为这个策略就是让线程绑定了一个CPU核心,自然其CPU占用时间就超过100%了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超越基础:提升你的数据采集策略与IP代理的高级应用

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

【AI辅助研发】-趋势:大势已来,行业变革

【AI辅助研发】-趋势:大势已来,行业变革 引言 在科技日新月异的今天,人工智能(AI)技术已逐渐渗透到各行各业,其中软件研发行业更是受益匪浅。AI辅助研发已成为大势所趋,不仅提高了软件开发的效…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:动态属性设置)

动态设置组件的属性,支持开发者在属性设置时使用if/else语法,且根据需要使用多态样式设置属性。 说明: 从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 attributeModifier attributeMo…

js之原型链

在JavaScript中,原型链是一种用于实现继承和属性查找的机制。每个对象都有一个内部属性[[Prototype]],这个属性指向创建该对象时使用的构造函数的“prototype"属性。对象的方法和属性定义在它的原型对象上。 1.原型(Prototypes&#xf…

RHCE——一、OpenEuler22.03安装部署及例行性任务

RHCE 一、OpenEuler22.03安装部署及例行性任务 一、网络服务1.准备工作2、RHEL9操作系统的安装部署3、配置并优化OpenEuler22.034、网络配置实验:修改网络配置 二、例行性工作1、 单一执行的例行性任务:at(一次性)at命令详解 2、循…

AI赋能下的研发新时代:2024年研发趋势展望

引言: 在技术的迅猛发展下,人工智能(AI)已经不再是科幻小说中的幻想,而是我们日常生活和工作中不可或缺的一部分。特别是在研发领域,AI的应用已经逐渐渗透到了各个环节,为科学家、工程师和研究…

[综述笔记]Graph Neural Networks in Network Neuroscience

论文网址:Graph Neural Networks in Network Neuroscience | IEEE Journals & Magazine | IEEE Xplore 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正&#xf…

电脑打字突然变成繁体字如何修改

1. 右键电脑右下角的“中”字 2. 点击字符集,选中简体即可 有用的话记得给我点个赞啊~ 靴靴!

【Leetcode每日一题】 位运算 - 位1的个数(难度⭐)(32)

1. 题目解析 题目链接:191. 位1的个数 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于计算题目所给32位二进制数1的个数返回即可。 2.算法原理 位运算特性:通过位运算,特别是按位与(&…

PLC的FC与FB模块程序的功能解析

前文讲了在西门子系列的PLC中四个程序模块的描述,从S7-1200PLC开始就有FC和FB程序块了,但在使用的时候,一些使用者还是不好理解,以至于不知道该如何选择。今天,我们就用大白话的方式给大家讲解FC与FB的功能。 1、FC与…

02-组件化编程与Vu额 Click脚手架

1.Vue组件化编程(只有1个数字是一级标题) 1.1 模块与组件、模块化与组件化(两个数字组成是二级标题) 1.1.1模块(三个数字是三级标题 依次类推) 理解:向外提供特定功能的 js 程序,一般就是一个 js 文件为什么:js 文件很多很复杂作用&#xf…

10.网络文件系统( NFS)使用

网络文件系统( NFS) 使用 NFS 优点: 开发过程中不受开发板空间的限制,直接使用网络文件就像使用本地文件一样;调试过程中避免一一将编译后的应用程序和库文件复制到开发板上。 在开发板中使用网络文件系统可以为开发和…

YOLO语义分割标注文件txt还原到图像中

最近做图像分割任务过程中,使用labelme对图像进行标注,得到的数据文件是json,转换为YOLO训练所需的txt格式后,想对标注文件进行检验,即将txt标注文件还原到原图像中,下面是代码: import cv2 im…

我们的一生都是在挤火车。

哈喽,你好啊,我是雷工! 昨天从燕郊坐火车回石家庄,由于赶上元旦假期,所有高铁票都售罄,一张普通火车票,还是一周前就买才买到的。 从燕郊站,到北京站,然后地铁去北京西站…

vulhub中Weblogic WLS Core Components 反序列化命令执行漏洞复现(CVE-2018-2628)

Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。 访问http://your-ip:7001/consol…

多模太与交叉注意力应用

要解决的问题 对同一特征点1从不同角度去拍,在我们拿到这些不同视觉的特征后,就可以知道如何从第一个位置到第二个位置,再到第三个位置 对于传统算法 下面很多点检测都是错 loftr当今解决办法 整体流程 具体步骤 卷积提取特征,…

数据库系统概论(超详解!!!) 第三节 关系数据库

1.基本概念 1. 域(Domain) 域是一组具有相同数据类型的值的集合。 2. 笛卡尔积(Cartesian Product) 给定一组域D1,D2,…,Dn,允许其中某些域是相同的。 D1,D2…

算法学习之动态规划DP——背包问题

一、01背包问题 (一)题目 有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。 第i件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值…

牛客周赛 Round 36 解题报告 | 珂学家 | 状态DP + 构造 + 9棵树状数组

前言 整体评价 今天相对容易,E的构造题,感谢出题人极其善意的Case 1, 算是放水了。F题是个很典的结论题,由于存在动态点修改,所以引入树状数组做区间和的快速计算。 A. 小红的数位删除 题型: 签到 s input()print (s[:-3])B. …

状态机高阶讲解-02

261 00:11:22,483 --> 00:11:25,260 或依赖于这个,在这里表达 262 00:11:26,780 --> 00:11:30,000 Moore是说什么,在这里表达 263 00:11:30,280 --> 00:11:30,523 264 00:11:30,523 --> 00:11:33,443 在状态里表达,状态的什么 …