jvm崩溃的原因_JVM崩溃时:如何调查最严重错误的根本原因

jvm崩溃的原因

当应用程序崩溃时,您可以学到什么?

我认为,“后见之明是20 /”是最喜欢的短语之一托马斯·罗梅尔 ,工程ZeroTurnaround的副总裁。 好吧,我实际上不确定在他的短语中占什么位置,但是我已经听过他多次说过这句话。 鉴于这意味着回顾过去,您对事情的推理比预测将来的事情要好得多,通常发生在我们未能正确预测某件事并无法反映出行动结果的情况下。 如果您经常听到此短语,则意味着您经常对事情进行反思,并且您知道每一次失败,每一次错误都会提供一个教训。

好吧,可能是您没有犯错误,或者您没有犯任何会传播到最终产品以及最终用户的重要错误。 我确实偶尔制作它们,不止一次地我炸毁了我们的服务器,并且无数次提交了损坏的代码。 有时它也会滑入最终产品。 每当我写的破损代码再次咬我时,我都会学到一些东西。 每次我必须调查造成错误的原因是什么,将其复制到我的机器上并进行修复。

在这篇文章中,我想看看可以帮助您获得有关错误的相关信息并帮助您重现和修复它们的工具和技术。

结构化日志

弄清楚某些代码中发生了什么的默认goto方法是阅读源代码。 当该来源实际上是您每天工作8-10个小时而仍然找不到罪魁祸首时,则您必须在错误发生时添加一些有关上下文的情境意识。 自然地,您可以从日志中获取该上下文。 我毫不怀疑您一直在使用日志,但是您可以通过以下技巧来使日志更加有用。

线程名称

如果配置线程名称以反映应用程序中发生的事情,则可以获得有关上下文的更多信息。 线程名称几乎总是包含在日志中,并且打印线程名称不会带来任何显着的性能开销。 例如,找出记录器的调用方类需要花费时间,因为您必须构造和遍历堆栈跟踪。 但是访问线程名称既快速又便宜。 另外,线程名很少用于其他任何事情,因此,在您认为合适的地方充填尽可能多的信息:系统组件名称,事务ID,发出请求的用户名等。稍后在调试问题时,您将感谢这些详细的日志,轻轻松松。

更多日志类型

另一个技巧是使JVM产生更多的日志,可以使JVM产生可以稍后分析的垃圾收集日志,JIT编译日志和堆转储。 由于性能开销,其中大多数可能不适合生产系统,但是您绝对可以在登台或在您自己的开发站上对它们进行试验。

稍后,您可以调整垃圾回收的性能,并进行大量优化, 如本文所述 ,但首先,您可以使用以下JVM选项启用垃圾回收日志: -XX:+ PrintGC -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps和-XX:+ PrintGCDateStamps -Xloggc:file

手动研究JIT编译日志可能不会告诉您太多信息,但是您始终可以尝试使用JITWatch来查看JVM编译代码时发生了什么。

对于生产系统来说,打开它的一个好主意是: -XX:+ HeapDumpOnOutOfMemoryError ,这将使JVM在发生OutOfMemory错误时创建内存转储。

日志种类繁多,并非对崩溃管理都同样有用,但是它们都是必不可少的,也是您军械库中最容易使用的工具。

现代开发人员工具

等一下 您是否要告诉我,在21世纪,没有什么比找出日志并从早期石器时代采用取证技术更好的方法来弄清您的应用程序中发生了什么? 好吧,不是真的。 但是我不知道有什么通用工具可以为您提供最佳的见解,以了解代码中发生了什么以及为什么发生。

在开发环境中,情况更加容易,您拥有大量的备用计算资源,并且可能会冒险附上不需要经过Ops批准流程的各种工具。

以Plumbr的IvoMägi的这篇文章为例 ,他讨论了他们的内存泄漏检测工具是否适合操作人员或开发人员。 理想情况下,该工具是有用且稳定的,因此您既可以在开发过程中享受其性能和功能,又不必担心将其附加到实时系统中。 但是这种情况很少发生,您不需要在生产环境中进行调试,也不想与JRebel即时交换类,等等。

但是,这并不意味着您根本不应该使用任何现代工具,而只能将自己限制在老式但已被证实的发现邪恶根源的方法上:日志。 毫无疑问,日志仍将是您将获得的最有用的取证信息来源,但是您可以做得更好。

通常,开发过程包括大量盯着代码,思考并有时在此处和此处更改功能位。 这是一项艰苦的工作,需要集中精力解决问题和系统逻辑。 如果您知道使事情变得更轻松的方法论或一些神奇的秘诀,请在Twitter上与我分享智慧: @shelajev 。 在此之前,我们将以软件工程需要集中精力为前提。 这意味着任何工具都有两个主要的非功能性要求:在功能上必须强大,并且必须具有非侵入性,因此您不必为如何实现所需的功能而费心。

重现某些条件的最有效方法是对其进行测试。 当它不可用时,下一个最好的事情就是使用一个录制调试器,例如Takipi进行生产调试或Chronon 。

使用Chronon,您可以记录代码中发生的操作,它们产生的结果,每给定时刻堆栈中的内容以及产生程序执行的事务日志的记录。 稍后,您可以将此日志提供给另一个程序运行,并来回逐步执行。

如果您想查明性能问题,则可以使用Java Mission Control的 Java Flight Recorder收集有关程序执行配置文件,垃圾收集统计数据,堆使用情况数据(例如对象分配,锁和IO详细信息)的信息。如果要运行附加到生产节点上的Java Mission Control,您必须支付许可证的费用,但是对于开发环境,则没有这样的问题。

再说一次,如果您要监视生产环境,则可能需要一个错误管理解决方案,该解决方案专门为获取尽可能多的错误信息而创建。

塔基皮分析

Takipi的仪表板和本机代理使您无需使用日志文件即可调试生产中的代码。 您将获得错误分析,分布式系统中的统一堆栈跟踪以及其他可以大大减少理解和修复错误的时间的事物。

在这篇文章中,我们研究了几种工具和技术,可以使您在积极开发应用程序或将其部署到生产环境中时更加了解应用程序中正在发生的事情。 无论是通过熟练地将JMC与飞行记录器配合使用还是通过精心制作的日志,再现错误都是纠正任何错误的最重要步骤。

您要记住的是,尽管每次都有好的旧工具在起作用,但几乎每个领域都有新的发展,并且崩溃管理和错误监视也不例外。 了解其中有哪些工具,并了解如何正确使用它们。 它将使您成为更好的开发人员。

翻译自: https://www.javacodegeeks.com/2015/04/when-jvms-crash-how-to-investigate-the-root-cause-of-your-toughest-errors.html

jvm崩溃的原因

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

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

相关文章

做外贸怎么找客户

现在国内贸易内卷非常严重,很多商家都转向海外市场了,总结而言,目前所有做外贸的人,核心的点就是要找到重点意向客户,今天就和大家分享一下目前市面上外贸找客户的几种方法。 主动出击式开发外贸客户 1、参加展会找外贸…

chatGPT入世,外贸企业如何充分利用?

当今时代,随着互联网的不断发展和普及,越来越多的外贸企业开始意识到数字化转型的重要性。数字化转型不仅可以提高企业的生产效率和质量,更可以提升企业在全球市场的竞争力。在数字化转型的过程中,将ChatGPT和AI数字人相结合是一种…

ChatGPT 做PPT只要3分钟?

ChatGPT 这个风口,我们普通人应如何抓住机会逆袭。 让我们一起来了解一下吧! 如何三分钟搞定一份 PPT,只需要三个步骤。和我一起来操作一遍吧! 这里会教大家如何使用ChatGPTMindShow自动生成PPT。 一、获取PPT大纲 我们首先要…

ChatGPT让Python再次伟大!

ChatGPT的爆火改变了很多东西,就与多年前移动互联网的普及一样,我们正处于AI改变世界的前夜。 在OpenAI为其推出了GPT-4语言模型后,ChatGPT的回答准确性有了极大提高,也具备了更高水平的识图能力,这让ChatGPT成为了“…

“盗窃”而来的 3000 亿单词?ChatGPT 摊上事了,遭索赔 30 亿美元!

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年5月份全网热门报告合集 普通人如何利用ChatGPT变现赚钱? 无需翻墙,无需注册,ChatGPT4直接使用 ChatGPT提词手册,学完工…

OpenAI推企业版ChatGPT,英伟达造AI安全卫士

GPT现在已经进入了淘金时代。虽然全球涌现出成千上万的大模型或ChatGPT变种,但一直能挣钱的人往往是卖铲子的人。 这不,围绕暴风眼中的大模型,已经有不少企业,开始研究起了大模型的“铲子”产品,而且开源和付费两不误…

chatgpt赋能python:Python如何赚钱?

Python如何赚钱? Python是一种广泛使用的高级编程语言,它可以用于 Web 开发、数据分析、人工智能等领域,因此它也是一种非常值得学习且有前途的编程语言。但是,Python也可以用来赚钱。在本文中,我们将介绍Python如何赚…

【吴恩达deeplearning.ai】基于LangChain开发大语言应用模型(下)

以下内容均整理来自deeplearning.ai的同名课程 Location 课程访问地址 DLAI - Learning Platform Beta (deeplearning.ai) LangChain for LLM Application Development 基于LangChain开发大语言应用模型(上) 一、LangChain: Q&A over Documents基于文…

继ChatGPT之后人工智能产业曙光已现,云知声加速推动产业智能化升级

2023随着ChatGPT的出现,有行业的人士表示:“工智能产业曙光已现”。目前,云知声正积极推动基于ChatGPT技术的应用落地案例,以专业版ChatGPT切入医疗场景,向更多通用场景拓展,加速推动产业智能化升级。 云…

2023双态IT北京用户大会回顾(一) | 基于运维数据治理的数智化转型

专题演讲人:擎创科技CTO 葛晓波 文末附有本场专题演讲视频 ●前言 各行业的云原生发展程度各有不同,并不是所有业务应用都适合云原生的形态,如若过度追求云原生化反而会使得企业运维压力骤增,运维成本激增。 从数字化转型的角度…

场景数量近300个,日均执行超1万次,光大银行RPA、AI技术应用实践

本文为中国光大银行科技研发中心副处长张洁,作客金融电子化“你问我答”栏目,围绕RPA技术的优势与应用情况,及ChatGPT对金融行业的影响分享行业痛点及解决办法的观点整理。 主持人:张处您好,您认为在金融业务中&#…

对话爱化身涂政:元宇宙是「价值创造」经济

目前元宇宙更多还是在初级技术探索阶段。至于未来终极形态如何?要从技术、经济、社会、政策四个层面进行实践和思考。 作者:王立新 元宇宙经济是否已经到了爆发时刻?2021年FaceBook宣布更名Meta,以释放自身对元宇宙的强烈信念。20…

大咖论道|金融AI下一阶段的发展思考

编者按: 回顾过去十年,人工智能(AI)技术的发展速度让人惊叹,金融行业是现今AI应用最具潜力和最为活跃的领域之一。通过多年渗透,AI不间断从技术驱动迈向场景驱动,已广泛与金融业务深度融合&…

银行数字人如何“破圈”?

银行数字人如何“破圈”? 2023-07-14 20:19:38 来源: 轻金融 北京 https://www.163.com/dy/article/I9KPRMOC051982TB.html 从场景应用、发展现状、关键技术等方面,探讨虚拟数字人如何“破圈”金融。‍‍ 作者:中国银行软件中心&#xff0…

甲骨文宣布裁员并撤回已发放的部分offer;中科院紫东太初2.0大模型发布;百度获深圳无人驾驶叫车服务商业营运许可丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 联想集团:AI服务器等基础设施业务收入超20亿美元 近日,联想集团ISG(基础设施方案业务集团)宣布其全球AI基础设施业务年度收入突破20亿美元,并公布其下…

多技术融合推动,元宇宙应用破局向前 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 文鸿伟 爱分析高级分析师 外部专家(按姓氏拼音排序) 唐虓 艾迪普科技 融合创新中心总经理 特别鸣谢(按拼音排序) 报告摘要 元宇宙作为下一代互联网的典型代表,很可…

世优科技数字人工厂助推政企稳抓元宇宙和ChatGPT两大风口

随着ChatGPT爆火,生成式AI算法的突破,使得AIGC(人工智能生产内容)进入应用爆发期,将给元宇宙相关产业链带来全新的想象空间。 在接下来的数字人发展趋势中,ChatGPT加持下的AI数字人将在相关行业如媒体、金融…

观察|ChatGPT席卷全球,AIGC还将如何变革金融银行业

近年来,虚拟数字人技术的发展为金融银行业数字化转型带来了新的探索方向。数字人作为元宇宙的核心交互载体,是未来银行与用户进行对话、打造沉浸式服务体验的重要链接渠道。截至目前,国内已有13家银行推出虚拟数字人员工,无论在手…

ChatGPT浪潮席卷,维智科技以时空AI赋能数实融合的未来城市

作者 | 伍杏玲 出品 | CSDN 每个时代都有新的技术浪潮,但在短短两年时间里见证两项颠覆全球的技术发展,实在出人意料之外:2021年以来,元宇宙成为互联网产业新风口,今年ChatGPT成为IT圈“顶流”,这两者为地…

网心科技CEO李浩:边缘计算的当下以及未来

随着ChatGPT爆火,生成式AI算法的突破,使得AIGC全面进入爆发期。在此背景之下,对算力的容量和分布、海量数据传输、服务成本等方面提出了很高的挑战,其中,边缘云计算能够有效扩展中心云的算力容量、解决算力分布不均、高…