【实战篇】用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 的停顿时间。

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

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

相关文章

excel筛选多个单元格内容

通常情况下,excel单元格筛选时,只筛选一个条件,如果要筛选多个条件,可以如下操作: 字符串中间用空格分隔就行。

IDEA中git如何快捷的使用Cherry-Pick功能

前言 我们在使用IDEA开发时,一般是使用GIT来管理我们的代码,有时候,我们需要在我们开发的主分支上合并其他分支的部分提交代码。注意,是部分,不是那个分支的全部提交,这时候,我们就需要使用Che…

使用OpenCV实现基于FisherFaces的人脸识别

引言 随着人工智能技术的发展,人脸识别已经成为日常生活中不可或缺的一部分。在众多的人脸识别算法中,FisherFaces 方法因其简单易用且具有良好的识别效果而备受青睐。本文将详细介绍如何使用Python和OpenCV库实现基于FisherFaces的人脸识别系统&#x…

【SpringBoot】13 XML格式的请求和响应

介绍 可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法…

OPC UA与PostgreSQL如何实现无缝连接?

随着工业4.0的推进,数据交换和集成在智能制造中扮演着越来越重要的角色。OPC UA能够实现设备与设备、设备与系统之间的高效数据交换。而PostgreSQL则是一种强大的开源关系型数据库管理系统,广泛应用于数据存储和管理。如何将OPC UA与PostgreSQL结合起来&…

【力扣刷题实战】合并两个有序链表

大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:合并两个有序链表 题目描述 示例 1: 示例 2: 示例 3: 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C语言) 兄弟们共勉…

Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)

0x01 产品介绍: Palo Alto Networks Expedition 是一款强大的工具,帮助用户有效地迁移和优化网络安全策略,提升安全管理的效率和效果。它的自动化功能、策略分析和可视化报告使其在网络安全领域中成为一个重要的解决方案。 0x02 漏洞描述&am…

图像处理(二)——MDPI特刊推荐

特刊征稿 01 期刊名称: Computer Vision and Image Processing, 2nd Edition 截止时间: 投稿截止日期:2024年12月31日 目标及范围: 感兴趣的主题包括但不限于: 用于图像分类和识别的深度学习 对象检测和跟…

Chromium HTML5 <svg>对应c++接口说明

一、SVG:可缩放矢量图形 开始学习 SVG 可缩放矢量图形(Scalable Vector Graphics,SVG)基于 XML 标记语言,用于描述二维的矢量图形。 作为一个基于文本的开放网络标准,SVG 能够优雅而简洁地渲染不同大小的…

c高级10月15日

1,思维导图

鸿蒙版微信正式上架,国产化软件抱团进化多样化生态圈

微信鸿蒙版已经在2024年10月12日正式上架鸿蒙应用市场,并且开始公测。根据报道,上架后鸿蒙版微信的公测名额在很短的时间内就被抢光,显示出用户对于这款应用的极大热情。腾讯高管张军宣布,自10月12日起,每晚在鸿蒙应用…

3D Slicer 教程三 ---- 坐标系

上篇提到3D Slicer 教程二 ---- 数据集-CSDN博客 3d slicer的坐标系与大多数医学影像软件使用LPS(左、后、上)坐标系统不太一样, 今天就仔细介绍一下坐标系的区别,复盘一下在影像处理中遇到的坐标问题(集中在坐标处理相关的,图像插值,图像处理, 定位线,翻…

薪资管理系统原型PC端+移动端 Axure原型 交互设计 Axure实战项目

薪资管理系统原型PC端移动端 Salary Management System Prototype 薪资管理系统原型图是一种以图形化方式展示系统界面和功能交互的设计图形。该原型图旨在呈现薪资管理系统的整体架构、界面布局和用户交互流程,为开发团队和利益相关者提供一个清晰而具体的概念。…

安全生产玩手机检测系统 玩手机识别系统 玩手机监测预警系统 使用 Python 和 OpenCV 库实现

在生产作业过程中,员工玩手机是一种极其危险的行为。它会分散员工的注意力,使其无法专注于工作任务。生产现场往往存在各种潜在的危险因素,如机械设备的运转、高空作业、化学品的使用等,一旦员工分心,就很容易忽视这些…

mongodb-7.0.14分片副本集超详细部署

mongodb介绍: 是最常用的nosql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片副本)集群。 环境准备 系统系统 BC 21.10 三台服务器:192.168.123.247/248/249 安装包&#xff1a…

AI LLM 利器 Ollama 架构和对话处理流程解析

Ollama 概述 Ollama 是一个快速运行 LLM(Large Language Models,大语言模型)的简便工具。通过 Ollama,用户无需复杂的环境配置,即可轻松与大语言模型对话互动。 本文将解析 Ollama 的整体架构,并详细讲解…

FFmpeg的简单使用【Windows】

目录 一、视频生成图片 静态图片 转码过程 动态图片gif 二、图片生成视频 三、FFmpeg常用参数命令 3.1 主要参数 3.1.1、-i 3.1.2、-f 3.1.3、-ss 3.1.4、-t 3.2 音频参数 3.2.1、-aframes 3.2.2、 -b:a 3.2.3、-ar 3.2.4、-ac 3.2.5、-acodec 3.2.6、-an 3…

desmos和webgl绘制线条

目录 desmos绘制 webgl绘制 将线段坐标生成三角化坐标 处理斜接线段 处理圆角 尖角 先在desmos上面完成线条lineJoin绘制的,再将代码和公式转到js用webgl绘制. desmos绘制 示例 desmos计角斜接角时,需要用到的一些函数。在desmos定义成公共函数&#xff0c…

【全网最全】AI产品经理面试高频100题答案解析

详细的目录如下,需要的小伙伴可以详细看一下~ 第一章:机器学习和深度学习的关系 第二章:机器学习7大经典算法 算法一:K近邻算法【分类算法】 1.1 KNN 算法的实现原理 1.2 KNN应用场景举例:预测候选人能不能拿到 O…

心觉:激活潜意识财富密码:每天一练,财富自动来

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作200/1000天 为什么有些人总是轻而易举地吸引到财富 而你却努力多年仍然徘徊在财务的困境中? 你每天都在辛苦工作&…