一次故障的查找记录

本贴最后更新于 2300 天前,其中的信息可能已经物是人非

背景

    在一次某个项目 sp-jar 运行过程中,总是在过一段时间后该 jar 进程总是会“无缘无故”(怎么可能是无缘无故呢,一切都是有原因的,只不过自己还不知道而已)结束掉或者被杀死,因此决定进行一次进行查找以自我地提升,毕竟在很小的一个以外包 demo 服务为导向的非技术性公司,这样的机会也是非常少的!

    既然,难得有这样的实战机会,就不应该再仅仅停留在理论上对各类故障定位解决、JVM 分析的理论层面上!于是,决定进行一番探索!

1、系统日志

  • 首先,在该应用运行过程中,记录其运行的 PID 号为 24296

  • 在系统日志/var/log/messages 中定位原因,执行命令

    cd /var/log

    cat messages | grep 24296

imagepng

  • 如查询结果,显然知道是出现了 OOM 异常,被系统杀死了;接下来,就是定位是应用中哪段代码导致的该异常

分析插曲

毕竟第一次摸索着实践,也没啥有经验人士面基,因此分析以为:

  • 第一次以为,在应用发生关闭的时候,是系统内存超了;而这个时候,系统会自动查找一个内存占用最大的进程也即 sp 给杀死(=> 但是 sp 被杀死,并不一定就是因为 sp 这个应用而导致的系统内存超出的,也有可能是其他的应用导致的系统内存超出,然后系统去杀死了内存占用最大的这个 sp)
  • =>,因此决定去查看上面那一段报错之前的一段 log 信息内容,只能 vim messages 加上搜索时间点”Jan 16 02:34:34“,去查看详细的时间点的内容如下,

imagepng

虽然也看不太懂(汗颜)

  • 再次分析,通过 zabbix 上系统的内存监控,发现系统内存好像并没有超出系统最大值,因此上面的以为是系统内存超出了而杀死的占用最大的内存进程,说法不一定是对的
    (其实,zabbix 上的时间内存飙升的那一个时间点刚好上 02:34:34 + 8 差不多这个时间),

=> 另外疑惑的是,在这一时刻,系统内存确实是在飙升的,但是根据监控图显示来说的系统内存也还是有的,仍然有 6G 多的内存可供使用!一方面系统中被使用的内存确实突增,另一方面,确实使用也没有爆掉整个系统的内存

=> 更进一步地思考,观察 zabbix 中该系统使用内存的走势来说,进一步发现被使用的最多也就是达到 2G!因此,考虑:或者操作系统本身安全考虑导致的某个地方的配置内存上限,或者 JVM 中的内存最大参数 Xmx 设置

imagepng

  • 然后,因此也有可能该 sp 这个应用本身的最大可用内存超了,即重新设置 Xmx??????
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8216 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 831 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 6 关注
  • Anytype
    3 引用 • 31 回帖 • 24 关注
  • 叶归
    11 引用 • 50 回帖 • 20 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 231 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 662 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖 • 1 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    371 引用 • 1856 回帖 • 1 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 3 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 3 关注
  • V2Ray
    1 引用 • 15 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • Outlook
    1 引用 • 5 回帖 • 3 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 96 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 5 关注
  • gRpc
    11 引用 • 9 回帖 • 99 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖 • 2 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    947 引用 • 1460 回帖 • 1 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 85 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 7 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖 • 1 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    32 引用 • 99 回帖