老板:再用Log4j就收拾东西回家吧!

HFSS时域求解器实战:TDR分析中的关键参数与精度权衡 本文深入探讨了HFSS时域求解器在TDR(时域反射计)分析中的关键应用。通过对比频域求解器,阐述了时域求解器在捕捉高速互连结构中细微阻抗不连续性和介质不连续性方面的独特优势,并强调了其在提升信号完整性分析精度中的重要性。 阅读详情

之前一段时间,为我们发现的一个SaaS应用程序会间歇性地卡顿、变慢,因为很长时间都没有定位到原因,所以解决的办法就只能是重启。

这个现象和之前我们遇到的程序变得卡顿不太一样,因为我们发现这个应用程序不仅在高流量期间时会变慢,有时在低流量时期也会变慢。 所以这令大家都很奇怪。

这类应用程序的变慢,重新启动之后就可以维持一段时间,但是过段时间又有可能会再次出现。

故障排除当我们准备排查这个问题的时候,我们在应用程序速度很慢的时候,尝试着捕获了这个应用程序的线程Dump。有很多种方式来捕获线程转Dump,我们选择了“jstack”工具来获取。

在问题发生时获得线程Dump是非常关键的!

然后我们将捕获的线程Dump上传到一个线上线程Dump分析工具(https://fastthread.io/)。该工具立即帮我们生成了一份报告。报告立即找出了问题的根本原因。分析工具上显示“http-nio-8080-exec-121”线程阻塞了100多个线程。下面是传递依赖图,展示了阻塞线程:

从图中可以看到100多个线程被“http-nio-8080-exec-121”线程阻塞。当我们点击图中的“http-nio-8080-exec-121”超链接时,它会打印出线程的堆栈轨迹:

仔细观察图中被框出来的部分,你可以看到该线程已经获取到org.apache.log4j.Logger的锁,正在进行其他的操作。接下来,我们随便找一个被"http-nio-8080-exec-121"阻塞的线程,看一下他的堆栈信息:

看一下上面堆栈跟踪中被框出来的部分。我们可以看到“http-nio-8080-exec-56”当前正处于阻塞(BLOCKED)状态,而阻塞的原因是它正在等待获取org.apache.log4j.Logger的锁。前面我们刚刚分析过,“http-nio-8080-exec-121”获得了org.apache.log4j.Logger的锁,正在进行其他操作,而锁并没有被释放,所以其他线程想要获得锁就只能被阻塞。其余的所有被阻塞的线程也在等待获取org.apache.log4j.Logger的锁。因此,每当任何应用程序线程试图记录日志时,它都会因为无法获取到锁而进入阻塞状态。

刚开始我们也没有太多的头绪,后来我们尝试借助Google的力量,然后我们用谷歌搜索了"org.apache.log4j.Logger 阻塞 线程"这样的关键字。我们在Apache Log4j bug数据库中偶然发现了这个有趣的Bug,而且这个Bug早在2015年就被发现了。(https://bz.apache.org/bugzilla/show_bug.cgi?id=57714 )。

这是Log4J框架中已知的bug之一,也是开发新的Log4j2框架的主要原因之一。 由于这个bug,任何试图打印日志的线程都进入了阻塞状态。它导致整个应用程序戛然而止。一旦应用程序从Log4j迁移到Log4j2框架,问题就解决了。结论Log4j已经在2015年8月开始就不再被维护了。如果您的应用程序仍在使用Log4J框架,强烈建议升级到Log4j2框架。Log4j2不仅仅是Log4j框架的下一个版本,它是一个从零开始编写的新框架,它有很多性能改进。 最后,如果网站遇到程序被拖慢的问题,那么也可以考虑一下这个因素。

洗衣店后台管理系统源码:Spring Boot实现会员管理、收银结算与自动报表生成 这套洗衣店业务管理源码基于Spring Boot 2.3搭建,后端集成Shiro 1.9权限控制、MyBatis 3.3数据库操作和Druid 1.0连接池,前端用Vue2.x构建交互界面。系统支持衣物全流程状态跟踪(待洗/在洗/已取),会员从开卡、充值、积分累积到等级升降的完整生命周期管理,收银时可选择多种支付方式并实时更新账户余额。财务模块提供日/月/年维度的营收统计、订单数量分析、员工业绩排行等可视化报表,所有报表数据均可导出。内置Quartz 2.3定时任务,能按设定周期自动清理过期记录、生成经营汇 阅读详情

相关推荐

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

老板:要是还继续再用Log4j,你就收拾东西回家吧!

之前一段时间,为我们发现的一个SaaS应用程序会间歇性地卡顿、变慢,因为很长时间都没有定位到原因,所以解决的办法就只能是重启。 这个现象和之前我们遇到的程序变得卡顿不太一样,因为我们发现**这个应用程序不仅在高流量期间时会变慢,有时在低流量时期也会变慢。**所以这令大家都很奇怪。 这类应用程序的变慢,重新启动之后就可以维持一段时间,但是过段时间又有可能会再次出现。 故障排除当我们准备排查这个问题的时候,我们在应用程序速度很慢的时候,尝试着捕获了这个应用程序的线程Dump。有很多种方式来捕...

lonely_bin的博客 454

gRPC之gRPC开发流程与入门案例

gRPC之gRPC开发流程与入门案例

YIYIYI 3759

【转·Java工具】Log4J,很不错的东西

让System.out.println回家种田,换句话说,就是该干嘛干嘛去。 您可能在想: System.out.println几乎在每个Java程序里都有那么几行,如何让他老人家回家种田呢? 我们怎么能少了这么重要的革命同志呢?doodoofish这里要说的是"该干嘛干嘛去",不是System.out.println管的就别让他管。想想,我们用System.out.println (文中

RickyLan的专栏 1075

icem二维非结构网格划分_ICEM CFD网格装配

正文共:718字7图 预计阅读时间:2分钟1 前言 对于一些大型的复杂的网格划分,可以将整个模型切分成多个子模型(二维几何用线切分,三维模型用面切分),然后对各个模型单独划分网格,最终装配在一起。这和机械设计的零件设计和装配设计有点相似,这个功...

weixin_39908758的博客 1625

银河飞腾FT-M6678 DSP开发初体验:从仿真器连接到第一个网络程序(CCS5.5+FT-EMU560实战)

本文详细介绍了银河飞腾FT-M6678 DSP开发环境的搭建过程,包括CCS5.5开发环境的配置、FT-EMU560仿真器的连接与设置,以及关键模块如网络驱动的国产化替换。通过实战案例,帮助开发者快速掌握国产DSP的开发流程,实现网络通信功能。

weixin_30919429的博客 555

log4j(转)

让System.out.println回家种田,换句话说,就是该干嘛干嘛去。 您可能在想: System.out.println几乎在每个Java程序里都有那么几行,如何让他老人家回家种田呢? 我们怎么能少了这么重要的革命同志呢? doodoofish这里要说的是"该干嘛干嘛去",不是System.out.println管的就别让他管。想想,我们用System.out.println...

dashumao0228的博客 115

变压器耦合放大器(低频应用+高频应用)

变压器耦合放大器(低频应用+高频应用)

m0_54943120的博客 2275

Log4j爆核弹级漏洞,安全人员鸡飞狗跳,连夜应急,忙测试

这两天相信大家都看到了一个新闻: 在洋哥的技术大咖群,不少CTO/总监带的团队也中招了,很多公司都开始紧急通知,让团队排查Log4j2组件的使用和漏洞预防的问题。 为了防止有些小伙伴不知情导致代码和产品出问题,我今天也分享一波。 先来介绍下这个漏洞吧: 无论是做前端开发还是后端开发,我们都需要打日志,这玩意可以帮助我们定位程序出现的各种状况。 Log4j2就是Java技术栈中常用的日志系统,Log4j2是在Log4j基础上迭代过来的,做了很多改进和优化: 这玩意还是相当优秀的,面试之后可谓所向披靡、应用

findyi的博客 6833

(持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第一期(真题+解析)| TCP、UDP的区别;程序局部性;ICMP协议及主要功能;重定位所需的计算机硬件

在当今信息化时代,军队中对于计算机专业人才的需求与日俱增。因此,了解面试和复试中常见的问题和要求对于准备应聘者来说至关重要。本文将围绕面试的准备要点、常见问题以及面试技巧进行探讨,并提供一些建议和经验。通过了解面试和复试的准备要点、常见问题以及技巧,读者将能够提升应对能力和成功率。本文为准备军队文职面试和计划考研复试的读者提供了有价值的参考和指导。通过阅读本篇博客,读者将能够获得关于军队文职计算机类面试和计算机考研复试的全面了解,提升自身的应对能力和成功率。

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

【DeepSeek应用实践】手把手教程:用 AnythingLLM + Ollama + DeepSeek-R1 搭建本地企业知识库

在众多的技术方案中,我们选择了 AnythingLLM、Ollama 和 DeepSeek-R1 这一组合来搭建本地知识库。Ollama 作为一个轻量级的本地化大语言模型部署工具,支持多种模型,易于安装和使用,能够快速在本地运行强大的语言模型。DeepSeek-R1 是一个专为知识库问答设计的检索增强生成(RAG)模型,它结合了检索和生成的优势,能够快速从知识库中检索相关信息并生成精准答案。而 AnythingLLM 则是一个用户友好的界面工具,可以方便地连接 Ollama 和 DeepSeek-R1

寻道AI,探索AI无限可能! 2571

Spring Boot 2.3.3 稳定版发布!修复了这18个Bug!!

8月13日,SpringBoot悄悄的升级了一个新的版本,2.3.3.RELEASE正式对外提供了。在maven仓库中,已经支持对2.3.3.RELEASE的引用了。这一版本中,新特...

HollisChuang's Blog 1004

【MATLAB代码】雷达观测目标跟踪模型|H-infinity Filter(H无穷大滤波)与EKF(扩展卡尔曼滤波)的对比。附完整代码,订阅专栏后可直接查看

对比了经典扩展卡尔曼滤波(EKF)与H∞优化的EKF(H∞-EKF)在目标跟踪中的性能。通过MATLAB仿真实验,结果显示:在存在模型误差和测量噪声的情况下,H∞-EKF相比经典EKF在位置误差上降低

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 245

让System.out.println回家种田

让System.out.println回家种田,换句话说,就是该干嘛干嘛去。您可能在想: System.out.println几乎在每个Java程序里都有那么几行,如何让他老人家回家种田呢? 我们怎么能少了这么重要的革命同志呢?doodoofish这里要说的是"该干嘛干嘛去",不是System.out.println管的就别让他管。想想,我们用System.out.println (文中称

doodoofish的专栏 3204

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

同步和异步,阻塞和非阻塞

在前不久的蘑菇街的面试中问了我Log4j的异步调用的优点,我没有答得很全。这里详细分析一下。同步和异步1.什么是同步?同步:指发送一个请求,需要等待返回。然后才能够发送下一个请求。在这个定义之下,我们的绝大多数的代码都是同步执行,比如函数调用时必须等待函数流程执行完毕然后返回给调用者。2.什么是异步?异步:简单点不是同步的都是异步。官方定义是发出一个异步过程调用后,调用者不会立刻得到结果。实际处理这

lizhao007 365

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

从运维到网络安全,我的中年逆袭之路!

2023年春节后的第一个工作日,我攥着9K的薪资条站在茶水间,看着新来的95后运维同事,他本科毕业两年,薪资却比我高3K。领导找我谈话时那句"基础运维岗位竞争太激烈",像一记闷棍敲醒了我。

fly_enum的博客 783

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

让 Java 界无人入眠的「核弹级」、「史诗级」漏洞,我却看到了不一样

上面这个公号「涩郎」,是我的一个备用号,为了防止万一哪天大号失联,平时一周我也会发三篇左右的我的思考,读书笔记,认知感悟等文章,带领大家一起探索精神与财务自由之路。大家好,我是校长。想必大...

非著名程序员 2575

我的程序员之路(十五) 琐碎零星的工作

     网站上线,服务器配置忙完了之后,就剩下一些零星的工作了,其中最主要的还是网站的样式修改,那段时间自己总是有点腹诽,本来说的是网站上线就转正了,但老板的意思是对这个网站地开发很不满意,所以不愿意提前转正,知道这个情况后,感觉在开发网站那股劲头被浇了一盘冷水,唉,热情大为消减,而那些修改大部分都是老板亲自提出修改要求的,似乎就是为了证明,我做的这个网站很糟糕,问题很多,他很不满意。   ...

皇马啸西风的一亩三分地 192

SpringBoot学习之路---日志框架前世今生及SpringBoot的选用

我们在软件开发的时候总要去跟踪记录些东西,来观察一些变量在程序中的变化 文章目录日志框架的由来:市面上的日志技术slf4j来管理日志SpringBoot的决定 日志框架的由来: 这里先讲个小故事: 小明是一名程序猿,有一天,他奉命开发一个大型系统,因此需要实时地观察程序的运行情况。 刚开始小明使用System.out.println();语句来直接打印出变量的情况,小明在每个变量使用之后都打...

LeslieLau的博客 380

充电桩场站少赔钱的秘诀!故障排查效率提 90%,停机缩到 1 分钟 -日志分级存储 + 链路关联:Java 充电桩平台故障排查效率提升 90% 的核心方案

充电桩场站少赔钱的秘诀!故障排查效率提 90%,停机缩到 1 分钟 -日志分级存储 + 链路关联:Java 充电桩平台故障排查效率提升 90% 的核心方案

李文慧 中国开源充电桩平台第一人;李文慧 国内知名开源工作者 全栈工程师 华为云最具价值专家 1094

从运维到网安,分享我自己中年逆袭之路的一些心得感悟

2023年春节后的第一个工作日,我攥着9K的薪资条站在茶水间,看着新来的95后运维同事,他本科毕业两年,薪资却比我高3K。领导找我谈话时那句"基础运维岗位竞争太激烈",像一记闷棍敲醒了我。

fly_enum的博客 667

运维人中年危机,我转型网安的逆袭之路,别慌有出路

我独自在机房反复看着回放监控录像,又是一个熬到凌晨三点的巡检,但这一次,我突然意识到:运维的尽头不该是背锅。其实运维转网安是最容易的,因为运维已经掌握了系统、网络、数据库的基础,就像盖房子已经打好了地基,只需要再熟悉黑客常用工具(比如Nessus、Burp Suite、Metasploit)和漏洞原理(比如OWASP Top 10),再加上大量的实战练习,就能快速转型。入职那天,我看着offer上的薪资——16K,比之前翻了两倍多,出办公室门的那一刻,我压抑不住自己内心的喜悦,这三个月的努力没有白费。

A1353192296的博客 1189
上一篇: Docker服务开放了这个端口,服务器分分钟变肉机!
下一篇: 用了Dapper之后通篇还是SqlConnection,真的看不下去了
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值