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

【实战篇】用SkyWalking排查线上[xxl-job xxl-rpc remoting error]问题

一、组件简介和问题描述

SkyWalking 简介

Apache SkyWalking 是一个开源的 APM(应用性能管理)工具,专注于微服务、云原生和容器化环境。它提供了分布式追踪、性能监控和依赖分析等功能,帮助开发者快速定位和解决性能瓶颈和故障。

xxl-job 简介

xxl-job 是一个轻量级的分布式任务调度框架,支持定时任务的管理与执行。它提供了简单易用的界面和丰富的功能,适合于各种业务场景。

遇到的问题

在使用 xxl-job 的过程中,突然有一天开始遇到了以下错误:

  • 错误码:500
  • 错误信息msg:xxl-rpc remoting error(Read timed out)

并且出现了大量的调度结果失败,但是执行结果成功的情况

这个错误通常表示在与 xxl-job 的 RPC 通信过程中发生了超时,可能由以下原因引起:

  1. 网络问题:服务间的网络连接不稳定,导致请求超时。(排查了不是这个问题)
  2. 服务没收到任务下发(如果这样的话它是不会执行的)
  3. 服务收到下发但是没有及时回复给xxl-job服务(怀疑)

二、开始使用SkyWalking 排查问题 

JVM指标查看

发现发生了很多次年轻代、老年代GC,每分钟花费最多快达到了1秒

第一次发生是在10-12 21:35

此时发生了老年、年轻代GC

21:35分的时候发生一次

此时也是发生了老年、年轻代GC

三、猜测并调整 

是不是每次发生调度失败的时候都会有GC 存在呢,我们试着修改一下JVM启动参数

-Xmn3G
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=6
-XX:InitiatingHeapOccupancyPercent=40
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200

1. 年轻代和老年代的设置

  • -Xmn3G:设置年轻代的大小为 3 GB。年轻代的大小会影响到 GC 的频率。适当增大年轻代的大小可以减少年轻代 GC 的次数,但同时也要注意不要过大,以免影响老年代的内存。

2. Survivor Ratio

  • -XX:SurvivorRatio=8:这个参数定义了 Eden 区和 Survivor 区的比例。在你的设置中,Eden 区占 8 份,Survivor 区占 1 份。适当调整这个比例,可以优化对象在年轻代中的存活时间,从而减少 GC 次数。可以考虑增加 Survivor 区的比例,以便更多的存活对象能够进入 Survivor 区,减少晋升到老年代的频率。

3. 最大晋升阈值

  • -XX:MaxTenuringThreshold=6:这个参数定义了对象在年轻代中存活的最大 GC 次数,超过这个次数的对象将被晋升到老年代。如果希望减少老年代的 GC 次数,可以考虑增加这个值,允许对象在年轻代中存活更长时间,从而减少晋升到老年代的频率。

4. 堆占用率

  • -XX:InitiatingHeapOccupancyPercent=40:这个参数定义了老年代开始 GC 的堆占用率。适当提高这个值,可以延迟老年代的 GC,减少其发生频率。

5. G1 垃圾回收器

  • -XX:+UseG1GC 和 -XX:MaxGCPauseMillis=200:G1 垃圾回收器旨在减少 GC 暂停时间,适当调整这些参数可以优化 GC 性能。通过设置合理的暂停目标,可以在一定程度上减少 GC 的次数。

6. 直接内存大小

  • -XX:MaxDirectMemorySize=512m:虽然这个参数主要控制直接内存的使用,但合理配置可以避免因直接内存不足而导致的额外 GC。

四、调整后重启服务 

重启服务后发现老年代已经很久没有了GC触发,年轻代的GC也没有了那么频繁

CPU利用率也不再那么高了 

 

五、回到问题

发现这个错误已经不报了,并且全部是调度、执行都成功

  • 错误码:500
  • 错误信息msg:xxl-rpc remoting error(Read timed out)

六、GC的解释

年轻代 GC

  • 类型:通常使用的是 Minor GC。
  • 影响:年轻代 GC 通常会导致短暂的 STW,暂停所有应用程序线程。由于年轻代 GC 的目的是清理短生命周期的对象,因此它的执行时间通常较短,通常在几毫秒到几秒之间。

老年代 GC

  • 类型:通常使用的是 Major GC 或 Full GC。
  • 影响:老年代 GC 通常会导致更长时间的 STW,因为它需要检查整个堆的内容。老年代的 GC 过程可能会更复杂,导致暂停时间更长,通常从几秒到几十秒不等。

G1垃圾回收器的特点

  1. 并行性

    • G1 GC 在进行垃圾回收时会使用多个线程来并行处理,这样可以更有效地利用多核 CPU,减少停顿时间。
  2. 增量式回收

    • G1 将堆分为多个区域(Region),在进行垃圾回收时,它会增量地回收这些区域,而不是一次性回收整个堆。这种方式可以降低 GC 的停顿时间。

相关文章:

【实战篇】用SkyWalking排查线上[xxl-job xxl-rpc remoting error]问题

一、组件简介和问题描述 SkyWalking 简介 Apache SkyWalking 是一个开源的 APM(应用性能管理)工具,专注于微服务、云原生和容器化环境。它提供了分布式追踪、性能监控和依赖分析等功能,帮助开发者快速定位和解决性能瓶颈和故障。…...

三勾软件/ java+springboot+vue3玖玖云电商ERP多平台源码

玖玖云ERP系统、支持多平台订单同步,仓库发货,波次拣货,售后服务,电商ERP一站式解决方案 项目介绍 玖玖云ERP系统基于javaspringbootelement-plusuniapp打造的面向开发的电商管理ERP系统,方便二次开发或直接使用。主…...

020 elasticsearch7.10.2 elasticsearch-head kibana安装

文章目录 全文检索流程ElasticSearch介绍ElasticSearch应用场景elasticsearch安装允许远程访问设置vm.max_map_count 的值 elasticsearch-head允许跨域 kibana 商品数量超千万,数据库无法使用索引 如何使用全文检索: 使用lucene,在java中唯一…...

基于SpringBoot+Vue的蜗牛兼职网的设计与实现(带文档)

基于SpringBootVue的蜗牛兼职网的设计与实现(带文档) 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue等工具:IDEA/Ecilpse、Navicat、Maven 该系统主要分为三个角色:管理员、用户和企业,每个角色都有其独特的功能模块,以满…...

Linux 命令 chown 和 chmod 的区别

Linux 命令 chown 和 chmod 的区别 chown的作用:更改文件或目录的所有者和所属用户组chmod的作用:更改文件或目录的访问权限 chown的作用:更改文件或目录的所有者和所属用户组 $ chown [options] user:group file_pathuser:新文件…...

盘点慢查询原因及优化方法

目录 一,前言二,准备 type重点看 三,慢查询原因和解决 1,sql未加索引2,索引失效3,limit深分页问题 (1)limit深分页为什么会慢(2)深分页优化 4,in…...

【热门】智慧果园管理系统解决方案

随着科技的进步,原有农业种植方式已经不能满足社会发展的需要,必须对传统的农业进行技术更新和改造。经过多年的实践,人们总结出一种新的种植方法——温室农业,即“用人工设施控制环境因素,使作物获得最适宜的生长条件,从而延长生产季节,获得最佳的产出”。这种农业生产方式…...

torch.nn.Sequential介绍

torch.nn.Sequential 是 PyTorch 中一个模块容器,用于将一系列层或模块按顺序连接在一起,简化前向传播过程。在 Sequential 中,所有的子模块会按照添加的顺序被执行,适合那些有明确顺序的神经网络结构,比如卷积神经网络、全连接网络等。 主要特点 按顺序执行: 将多个子模…...

使用verilog设计实现的数字滤波器(低通、高通、带通)及其仿真

以下是一个简单的使用Verilog设计数字滤波器(以有限脉冲响应(FIR)滤波器为例,实现低通、高通、带通滤波器)的基本步骤和代码框架: 一、FIR滤波器原理 FIR滤波器的输出 y [ n ] y[n] y[n] 是输入信号...

KPaaS集成平台中怎么创建数据可视化大屏

KPaaS集成平台的数据可视化大屏是什么? 在KPaaS业务集成扩展平台中,数据大屏是一种数据可视化展示工具,它可以帮助企业将复杂的数据以直观、易理解的方式呈现出来,从而提高数据的可读性和价值。数据大屏的主要特点包括&#xff1…...

深度学习:网络压缩(Network Compression)详解

网络压缩(Network Compression)详解 网络压缩是一种旨在减小深度学习模型大小,提高其运行效率和降低计算资源消耗的技术。在移动设备和嵌入式系统等资源受限的环境中,网络压缩尤为重要。它允许这些设备利用现有的深度学习技术&am…...

Go pprof性能分析

pprof是Go语言内置的性能分析工具,它可以帮助我们分析程序的CPU使用情况、内存分配等。 pprof 包含两部分: Go语言内置的两个包 net/http/pprof 对 runtime/pprof 的二次封装,一般是服务型应用。比如 web server ,它一直运行。这…...

扬帆出海!九章云极DataCanvas公司惊艳亮相迪拜GITEX Global 2024

近日, 第44届GITEX GLOBAL展会(GITEX GLOBAL 2024)及全球领先的创业与投资盛会Expand North Star 2024在迪拜盛大启幕。九章云极DataCanvas公司惊艳亮相盛会,向全球观众展示智算领域最新研发进展与创新成果,在国际舞台…...

Qt | 元对象+元枚举+Qt自带图标案例

点击上方"蓝字"关注我们 01、QMetaObject >>> QMetaObject 是 Qt 中用于反射的一个类,提供了有关类的信息,包括属性、信号和槽等。它是 Qt 的元对象系统的核心部分,允许您在运行时获取有关 Qt 对象的详细信息。这种功能在使用 Qt 的信号与槽机制、属性系…...

linux升级cmake

如果出现如下报错,就应该升级cmake了! CMake Error at CMakeLists.txt:1 (cmake_minimum_required): CMake 3.1 or higher is required. You are running version 2.8.12.2 -- Configuring incomplete, errors occurred! 官网 可以下载各个版本的cma…...

ip a查看网卡接口信息

ip a命令是用于查看和管理网络接口信息的命令。通过执行ip a命令,可以查看当前系统上所有网络接口的配置信息,包括IP地址、子网掩码、网关、MAC地址等。该命令还可以用于配置网络接口的参数,如设置IP地址、启用或禁用接口等操作。 # ip a 1:…...

centos celery 日志管理

celery经常会产生大量日志,长时间累计下来会对服务器造成一定的压力 1 配置 logrotate 进行日志拆分 logrotate 是 Linux 系统中常用的日志管理工具。我们将使用它来管理 Celery 的日志文件,确保日志文件不会无限增长,并定期拆分、归档和删…...

深度学习(DL)实战——基本概念介绍

公众号:自学编程村,关注后,回复“书籍”,领取1000多本计算机书籍。涵盖语言语法、数据结构算法、AI相关书籍、开发相关等等各种书籍,应有尽有,你总会用到。 关注方式见主页或文章底部。想要加群可从公众号中…...

较新(24.3)加速Diffusion模型推理的方法,附带参考文献

1.采用fast ODE solvers: Karras, T., Aittala, M., Aila, T., Laine, S.: Elucidating the design space of diffusionbased generative models. In: Conference on Neural Information Processing Systems (NeurIPS) (2022) Lu, C., Zhou, Y., Bao, F., Chen, J…...

硬件产品经理的开店冒险之旅(上篇)

这是一篇流水账式的个人履历小结,算是迎接接下来的人生第二职业曲线。未来将不定期更新在第二职业方面的探索过程记录,既当作自己的冒险之旅记录,也期望有机会让自己的经历能在互联网上留下一些印记。 一些职业生涯小记:目前的状…...

永磁体磁场的有限元模拟(FEA仿真)

磁场是看不见摸不着的,那么怎样画出磁场的形状、描绘磁场的走向呢?借助有限元模拟是很好的方式。 有限元模拟也叫FEA仿真(Finite Element Analysis),是使用计算机利用复杂的数学方程、模型和公式对真实物理系统进行模拟…...

别再乱用List了!Unity中Queue的5个高效应用场景对比

Unity中Queue的5个高效应用场景:性能对比与实战指南 在Unity开发中,数据结构的选择往往决定了游戏性能的上限。很多开发者习惯性地使用List来解决所有问题,却忽视了Queue在特定场景下的性能优势。本文将深入分析Queue的底层原理,并…...

【深度解析】硬中断与软中断:从硬件信号到软件调度的核心机制

1. 硬中断:硬件与CPU的紧急通话 想象一下你正在专心写代码,突然有人拍你肩膀说有紧急电话。这时候你必须立即保存当前工作状态,去接这个电话——这就是硬中断的生动比喻。硬中断本质上就是外部设备(比如网卡、硬盘、键盘&#xff…...

SecGPT-14B应用场景:DevSecOps流水线中嵌入安全问答节点实现CI/CD风险拦截

SecGPT-14B应用场景:DevSecOps流水线中嵌入安全问答节点实现CI/CD风险拦截 1. 安全自动化新范式 现代软件开发流程中,安全防护往往成为效率的"绊脚石"。传统安全审查需要人工介入,导致CI/CD流水线频繁中断。SecGPT-14B的出现为这…...

快消企业如何选择品牌策划公司?

在寻找专业的品牌策划公司时,福建远见品牌策划公司凭借其系统的策略思维、创新的执行能力和显著的行业口碑,成为众多企业,尤其是注重品牌长期价值企业的优先选择。为什么选择专业的品牌策划公司?专业的品牌策划公司能帮助企业&…...

Tensorflow-101自编码器AE深度解析:降噪与卷积自编码器实现指南

Tensorflow-101自编码器AE深度解析:降噪与卷积自编码器实现指南 【免费下载链接】Tensorflow-101 项目地址: https://gitcode.com/gh_mirrors/te/Tensorflow-101 在深度学习领域中,自编码器(Autoencoder,AE)作…...

FastAPI异步测试终极指南:从配置到实现的完整教程

FastAPI异步测试终极指南:从配置到实现的完整教程 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI异步测试是构建高…...

加了领导微信,发现他从不发朋友圈。同事说:他把你屏蔽了。后来才知道,他没屏蔽任何人,只是不发!问他为什么,他说:发什么都不对!

加了领导微信,点开他的朋友圈,映入眼帘的是一条冷酷的横线。此时,旁边的同事幽幽地补了一刀:“不用看了,他肯定把你屏蔽了。”你心里“咯噔”一下,瞬间脑补了一出80集职场宫斗剧:我是不是哪里得…...

5个维度深度解析GBFR Logs:让你的《碧蓝幻想:Relink》战斗数据可视化![特殊字符]

5个维度深度解析GBFR Logs:让你的《碧蓝幻想:Relink》战斗数据可视化!🎮 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: htt…...

BeesAndroid实战教程:如何在Nexus 6设备上搭建Android 7.0开发环境

BeesAndroid实战教程:如何在Nexus 6设备上搭建Android 7.0开发环境 【免费下载链接】BeesAndroid 项目地址: https://gitcode.com/gh_mirrors/be/BeesAndroid BeesAndroid是一款专为Android开发者打造的开源项目,通过本教程,你将快速…...