记一次系统卡顿的问题

logback死锁导致程序被hang住 背景 出问题的系统是一个存储系统,系统有一个功能就是多线程下载hadoop上的文件;上层业务方使用的是python,而公司不提供python api下载hadoop上的文件,只提供java api下载;因此我们的系统就变成了上层用户通过python调用我们的python api,我们的python api通过py4j调起jvm操作java中的对象和方法;用户在下载文件通常是100多个进程,某天用户... 阅读详情

问题

系统发生卡顿,一开始是整个系统都卡,点哪里都有问题,然后被人误打误撞重启了redis,系统
恢复了很多,但是下午又发现,某些定时任务执行极其缓慢。

之前也发生过系统卡顿,但当时是因为数据库的连接池不够用,通过配置增加了Hikari连接池数量。通过查看日志,这次不是同样的问题。

排查

教你如何排查Java系统运行缓慢等问题 附详细思路 | w3cschool笔记

根据上述流程,排查内存、CUP、死锁之后,把目光放在了接口耗时和等待线程上。

Windows将jstack内容输出到文件的命令:

jstack <进程ID> > thread_dump_1.log

先说接口耗时,系统平时的并发量不大,而且也不是高峰期,基本不存在高并发导致接口阻塞。通过jstack也没有发现大量接口阻塞在某个接口。

然后就是等待线程,通过jstack发现大量线程处于等待状态,但是太多且规律不统一,无法确定问题。通过查询合同任务所在的类,发现了以下线程信息:

"RTF_CLUSTERED_JOB_SCHEDULER_Worker-6" #330 prio=5 os_prio=0 tid=0x000001d10e918800 nid=0x841c waiting on condition [0x0000000bd80fd000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000003c091b690> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
	at ch.qos.logback.core.OutputStreamAppender.writeBytes(OutputStreamAppender.java:197)
	at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:231)
	at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:102)
	at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
	at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
	at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
	at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
	at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
	at ch.qos.logback.classic.Logger.filterAndLog_2(Logger.java:414)
	at ch.qos.logback.classic.Logger.error(Logger.java:530)
	at com.inspur.gs.qy.jzgx.cjhdjgx.core.utils.Logger.error(Logger.java:17)
	at com.inspur.gs.qy.jzgx.cjhdjgx.core.utils.CommonTools.getResultData(CommonTools.java:211)
	at com.inspur.gs.qy.jzgx.cjhdjgx.core.service.MetaDataService.contractRpc(MetaDataService.java:1246)
	at com.inspur.gs.qy.jzgx.cjhdjgx.core.service.MetaDataService.getContractData(MetaDataService.java:1146)
	at com.inspur.gs.qy.jzgx.cjhdjgx.core.service.MetaDataService.CreateOrUpdateHtDict(MetaDataService.java:1110)
	at com.inspur.gs.qy.jzgx.cjhdjgx.core.timedTask.CHTimeTaskImpl.CreateOrUpdateHtDict(CHTimeTaskImpl.java:90)
	at sun.reflect.GeneratedMethodAccessor2839.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.inspur.edp.cdf.component.core.invoker.adapter.common.CommonComponentInvokeService.run(CommonComponentInvokeService.java:251)
	at com.inspur.edp.cdf.component.core.invoker.adapter.common.CommonComponentInvokeService.invokeByJson(CommonComponentInvokeService.java:109)
	at com.inspur.edp.cdf.component.core.invoker.adapter.common.CommonComponentInvoker.invokeByJson(CommonComponentInvoker.java:36)
	at com.inspur.edp.cdf.component.core.service.ComponentInvokeServiceImpl.invokeByJson(ComponentInvokeServiceImpl.java:120)
	at io.iec.edp.caf.scheduler.actuator.jobimpl.ComponentJobImpl.execute(ComponentJobImpl.java:82)
	at io.iec.edp.caf.scheduler.agent.RemoteJobAgentServer.execute(RemoteJobAgentServer.java:44)
	at io.iec.edp.caf.scheduler.agent.RemoteJobAgentServer.remoteExecute(RemoteJobAgentServer.java:59)
	at sun.reflect.GeneratedMethodAccessor614.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.iec.edp.caf.rpc.client.local.RpcLocalInvokerImpl.doInvoke(RpcLocalInvokerImpl.java:377)
	at io.iec.edp.caf.rpc.client.local.RpcLocalInvokerImpl.fireRpcInvocation(RpcLocalInvokerImpl.java:268)
	at io.iec.edp.caf.rpc.client.local.RpcLocalInvokerImpl.invokeLocalService(RpcLocalInvokerImpl.java:113)
	at io.iec.edp.caf.rpc.client.RpcClientImpl.invoke(RpcClientImpl.java:201)
	at io.iec.edp.caf.rpc.client.RpcClientImpl.invoke(RpcClientImpl.java:125)
	at io.iec.edp.caf.rpc.client.RpcClientImpl.invoke(RpcClientImpl.java:141)
	at io.iec.edp.caf.scheduler.service.worker.RemoteJobAgentLocalProxy.execute(RemoteJobAgentLocalProxy.java:53)
	at io.iec.edp.caf.scheduler.service.worker.LocalJobImpl.executeJob(LocalJobImpl.java:62)
	at io.iec.edp.caf.scheduler.service.worker.RTFSchedulerJob.execute(RTFSchedulerJob.java:56)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
	- locked <0x00000004652f0ba8> (a java.lang.Object)

然后发现很多线程都停在了写日志的操作上,一开始以为是日志框架出现了问题,通过搜索发现
这个文章:记一个写日志阻塞的问题_logback线程阻塞-优快云博客

这个大佬也遇到了相似的问题,感觉应该是同一个问题,但我们没有使用到Runtime.getRuntime().exec这个方法,思来想去可能是产品用了,没有处理好,无从证实。

后续

打了产品补丁之后,卡顿问题被解决,通过对比补丁前后的jstack文件,大概率确定是日志阻塞的问题

【Logback】Logback 中的 Appenders Appender组件负责处理Logback日志写入的任务,该组件必须实现接口,该接口的主要方法总结如下://主要是解决将日志写到哪里去的问题//核心方法Appender接口中其实就一个最核心的方法,即doAppend()方法,且该方法只有一个参数,也就是类型为 E 的对象实例。泛型 E 的实例类型需要根据 logback 的具体模块进行决定,在模块内,E 的类型为ILoggingEvent(日志记录事件),在模块内,E 的类型为。 阅读详情

相关推荐

Logback 日志打印导致程序崩溃的实战分析

日志记录是必不可少的一环,帮我们追踪程序的行为,定位问题所在。然而,有时日志本身却可能成为问题的根源。所以要根据实际情况选择合适的日志输出方式,避免造成程序阻塞而导致业务收到影响。从理论到实践:零拷贝技术的全面解读_零拷贝详解-优快云博客Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践_nacos sentinel-优快云博客从0开始理解云原生架构-优快云博客TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧_tidb 分布式自增id-优快云博客。

我是一名热爱编程和分享知识的技术作者,在金融和教育领域有多年的研发管理经验,感谢您访问我的博客,一定会为您带来不一样的收货! 1919

logback日志配置

logback日志配置

qq_34233308的博客 3794

通过PXE的方式实现Ubuntu 24.04 自动安装

之前都是通过PXE来自动化安装Redhat系列的,例如:Rocky9、Rocky10、CentOS7、银河麒麟 Kylin-V10、Kylin-V11、OpenEuler 24.03等。现在安装Ubuntu系列的跟红帽的不太一样,所以在这里介绍下。

邢宇宇的博客 1493

高并发系统谨防被一行日志击垮

这就意味着同一个appender的日志写是串行的,在高并发的场景下因为有锁的争用现象,所以看似很简单的一行日志,耗费的时间却不少。接下来我们在本地简单的模拟一下高并发的场景,并记录打一行日志的耗时是多少需要说明的是,现实中高并发的请求应当用一个线程池向另一个线程池反复提交任务来模拟,这里我们简化了这个过程。

mxt51220的博客 1173

BCM-BCP-DRP-运维管理之故障管理——故障的分类与处理流程

ITSM Business Continuity Manage(BCM) BusinessContinuityPlan(BCP) 偏业务 DisasterRecoveryPlan(DRP) 偏IT 天塌了,考虑在天塌了的状态下做什么,怎么开展业务就是BCP; 天塌了,考虑怎么把天撑回去,就是DRP。 DRP+BCP+供应链管理+危机管理等就是BCM (业务连续性管...

mmgithub123的博客 2722

别再手动折腾了!PICO Unity SDK 一键配置开发环境保姆级教程(含PDC串流调试)

本文详细介绍了PICO Unity SDK的一键配置功能,帮助开发者快速搭建VR开发环境。通过自动化配置流程,大幅减少手动设置时间,提升开发效率。文章还涵盖了PDC串流调试技巧和常见问题解决方案,是PICO VR开发的实用指南。

weixin_30335575的博客 453

linux卡顿问题排查_记一次Linux系统卡顿的排查过程

https://www.pianshen.com/article/41121355927/1.使用w命令查看系统负载,发现系统负载很高:(该服务器只有一个CPU,load average值的意义是单位时间段内CPU活动进程数,这个值越大就说明服务器压力越大,一般情况下这个值只要不超过服务器的cpu数量就没有关系)2.使用top命令进一步确认具体是原因导致的负载过高,执行top命令后,发现CPU这一...

weixin_39888049的博客 890

5分钟看懂LTE注网全流程:从PLMN选择到小区驻留的log分析技巧

本文深入解析了LTE终端从开机到成功驻留小区的完整流程,重点分享了基于QXDM和QCAT工具的log分析实战技巧。文章详细拆解了PLMN选择、System/Band扫频、小区搜索与同步、系统消息解析及驻留等关键步骤,并提供了高频问题场景的排查思路,帮助网络优化工程师快速定位终端侧、射频环境或网络配置问题。

app77的博客 432

记一次Ubuntu系统排查Qt界面刷新卡顿问题

解决一次QT应用程序刷新问题

zhangjp226的博客 652

【Neo4j × Python】基于知识图谱的电影问答系统(含问题记录与解决)附:源代码(含Bug解决)

此前,曾介绍过Neo4j的一些基础知识,本篇将在PyCharm中与Neo4j建立关联,从0到1实现一个基于知识图谱的电影问答系统,实现过程中,没有一帆风顺,而是遇到了一些问题,因此也包含问题的记录与解决。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 3166

【GEOS-Chem模拟教程第二期下】全球生物质燃烧 GFAS 数据配置

本博客详细介绍全球生物质燃烧 GFAS 数据下载及在 GEOS-CHEM 模型中的配置

WW、forever的博客 1395

full gc 次数_记一次由于GC导致的系统卡顿问题

前置说明:文中A系统,是几年前开发的,和目前开发的系统没有任何关系,使用化名主要为了防范风险;A系统中的示例代码和功能做了一些修改,避免掺杂太多不必要的干扰信息;之前在登录A系统后,发现订单列表总是打开很慢,有很明显的卡顿情况,上一次出现这种情况还是mysql锁表,然后订单卡在Actor(里面有个队列)里面,所以起初以为是订单量过大的问题(虽然隐约觉得不是。。。后来发现真的不是),后来想...

weixin_39834154的博客 737

解锁Vscode:C/C++环境配置超详细指南

本文详细介绍如何在 VSCode 中配置 C/C++ 开发环境,帮助开发者快速搭建高效的编码调试环境。内容涵盖前期准备、软件下载安装、环境变量配置、工作区文件设置及测试运行全流程:首先需准备 VSCode 编辑器、MinGW-w64 编译器及 C/C++ 插件;接着完成工具下载与安装,配置系统环境变量以确保编译器可全局调用;然后通过创建.vscode工作区文件夹,配置核心文件,实现代码智能提示与调试功能;最后通过编写 Hello World 示例验证环境可用性,并附上常见问题排查方案。

邓邓子的博客 3047

java如何定位一个系统的卡顿,记一次 Java 应用性能问题定位

问题系统大部分时间响应速度正常(平均响应时长在 50 - 500 ms),但近期隔一段时间,前端请求频发卡顿、请求超时的问题,但是一会就又好了;虽然能用,但这对于程序员来说是不能忍的,必须揪出的问题,搞定它;当前服务现状服务是一个基于 Java 生态圈开发的工作流调度系统,主要由两个部分组成(耦合在一起了)内嵌的 Jetty server + spring web 服务: restfull api...

weixin_39635084的博客 860

具身智能(40):主流 VLA 模型π₀

摘要: π₀是首款专为机器人设计的VLA(视觉-语言-动作)端到端基础模型,通过双阶段训练实现“感知-决策-执行”闭环。其创新点包括:1)FlowMatching技术实现连续平滑动作控制(精度0.3°);2)结合VLM预训练与多机器人实操数据,零样本任务完成率达76.4%,远超同类模型;3)支持模糊指令理解与动态场景适应(如遮挡识别)。开源版本涵盖不同规模模型,适用于工业装配、服务机器人等场景,在延迟(213ms)和稳定性(92%自主恢复率)上显著领先OpenVLA等竞品。

码农17年的博客 510

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

硬解析优化_记一次生产数据库系统优化实例:系统异常卡顿问题优化

概述最近生产系统某个功能管理模块出现卡顿,输入查询条件查询到进入查询结果页面耗时20分钟,该问题对现场作业效率造成较大影响。但之前并无异常,最近也没有做什么太大操作,下面介绍一下问题的排查过程~一、查看当前等待事件排查结果:等待事件无明显异常,等待时间均不长SELECT inst_id,wait_class,EVENT, SUM(DECODE(WAIT_TIME, 0, 0, 1)) "Prev...

weixin_39524834的博客 505

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

记一次Linux系统卡顿的排查过程

最近在使用Linux云主机时发现远程登录操作卡顿,具体现象就是输入命令时,输的命令不能立即显示,要过一会儿才显示,按tab键补全也不好使。为了防止是网络原因导致的卡顿,特意从VNC界面登录试了下,发现卡顿现象依旧。以下为排查的具体步骤: 1.使用w命令查看系统负载,发现系统负载很高:(该服务器只有一个CPU,load average值的意义是单位时间段内CPU活动进程数,这个值越大就说明服务器压...

菜鸟博客 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

记一次win11的鼠标光标卡顿的解决历程

这是一篇关于解决 win11 系统下鼠标光标卡顿问题的记录。

A___Tiger的博客 4万+

记一次Android APP卡顿问题的解决历程

大约在2017年的7、8月份,我开发的一款APP突然出现了页面跳转卡顿,掉帧,然后崩溃的现象,我查看日志,只看到了一堆掉帧的提示,而没有错误点报错提示,也非逻辑错误,总之就是“我就是卡顿,但我就是不告诉你哪卡顿了,是谁导致我卡顿了”!      由于之前没有出现过这个问题,于是我开始查找APP卡顿的问题解释,然后网友们说的最多的是在主线程里有严重的耗时操作,页面刷新频率低于16帧/m...

wj_xupt的博客 6926

记一次Gitlab Runner卡顿的详情分析

记一次Gitlab Runner卡顿的详情分析 原创lyonger网易游戏运维平台 lyonger 18 年加入网易,先后负责过多个游戏产品的运维工作,多年运维生涯。负责小游戏 CI/CD、事件处理平台开发、游戏 Nomad 运维模式探索、gitlab 平台维护等工作。主要关注 Linux 性能优化、DevOps、云原生领域。探索和分享是一趟美好的旅程。 记一次G...

Fish 2478

linux卡顿问题排查_记一次Gitlab Runner卡顿的详情分析

lyonger18 年加入网易,先后负责过多个游戏产品的运维工作,多年运维生涯。负责小游戏 CI/CD、事件处理平台开发、游戏 Nomad 运维模式探索、gitlab 平台维护等工作。主要关注 Linux 性能优化、DevOps、云原生领域。探索和分享是一趟美好的旅程。记一次Gitlab Runner卡顿的详情分析该问题排查耗时数周,下面分享一下整体的排查过程,仅供大家参考。问题的背景最近Gitl...

weixin_42306002的博客 483

一次直播卡顿问题排查处理记录

一次直播卡顿问题排查处理记录一、直播数据流二、卡顿现象:三、排查思路:推流端(发布端)自建流媒体/CDN拉流端(观看端)模拟推拉流测试四、排查过程:1. 排查服务器端1.1 服务器硬件性能1.2 服务器网络1.2.1 iperf测试1.2.2 wget1.2.3 停掉流媒体程序,iperf监听在流媒体端口,排除端口限速2. 排查播放端2.1 用vlc播放流地址,查看卡顿现象2.2 www.speedtest.cn测试带宽2.3 查看CPU,内存使用率,不高3. 模拟推拉流测试3.1 使用ffmpeg推流3.

qq_33347108的博客 2402

记一次 windows 桌面卡顿

这几天在 windows 桌面上的操作感觉非常不好,一开始以为是电脑老化、网络卡顿、C 盘又被垃圾挤占空间、或什么自启动软件占了内存,复制一个快捷键出来都要缓冲。 . . 然后就卸载了很多不常用的软件,到自启动的服务中查看,又一直看 CPU 和内存占比,没有被挖矿或上线啊,一顿操作后就查没查看 windows 系统日志了,搞得我一度郁闷,以为真的是电脑老化了。 . . 最后在一次偶然操作发现,好像别的文件夹没有这种卡顿,就是范围好像真的限制在桌面上而已,然后看了一下桌面空间。 . . 毕竟也学过操作系统

沐一 · 林 的博客 1060

联想e480卡顿严重_记一次Gitlab Runner卡顿的详情分析

可直接点击上方蓝字(网易游戏运维平台)关注我们,获一手游戏运维方案lyonger18 年加入网易,先后负责过多个游戏产品的运维工作,多年运维生涯。负责小游戏 CI/CD、事件处理平台开发、游戏 Nomad 运维模式探索、gitlab 平台维护等工作。主要关注 Linux 性能优化、DevOps、云原生领域。探索和分享是一趟美好的旅程。记一次Gitlab Runner卡顿的详情分析该问题排...

weixin_39550587的博客 803

【排故】系统卡顿如何快速定位问题?分享一次排故的过程

公司为应对企业成长所带来了各类公文审批工作,购买了一套办公自动化系统,但是系统在运行过程中会时不时发生系统级别的卡顿,用户访问公文的时候基本上等待数分钟都无任何响应。

Scalzdp的专栏 1595

Cursor 编辑器保存代码卡顿问题 - 一次排查插件性能问题的经历

系统性排查很重要:遇到问题不要乱猜,要有条理地一步步排除可能性。就像写代码一样,要有逻辑。插件真的能影响性能:那些看起来很小的插件,有时候影响却很大,尤其是在保存、格式化这种频繁操作上。社区是个宝库:遇到问题先去 GitHub、Stack Overflow 等地方搜一搜,很可能别人已经踩过这个坑了。新版本不一定最好:有时候回退到稳定的旧版本,比死磕新版本的问题更明智。做好记录很重要:把问题和解决方案记录下来(就像我现在写这篇文章),不仅能帮助他人,也是对自己经验的沉淀。

weixin_43334866的博客 7258
上一篇: 浅拷贝和深拷贝
下一篇: 记一次IDEA报错GC overhead limit exceeded
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值