一次线上事故排查

news2024/9/30 5:39:37
  1. 问题

  1. 3月1日监控系统监测到某子系统所在机器Cpu突然飙升。

  1. 排查系统

  1. 首先登录对应系统的机器,top查看机器信息,显示当前cpu已经到了800%

  1. top 显示800%

  1. 根据top的pid查看对应服务,查看服务子进程

  1. 排查子线程,发现子线程有8个都100%了,然后查看java服务

  1. ps-ef | grep tomcat

找到对应服务

  1. 打印服务的栈信息

jstack pid > pid.log

打印服务的主线程的Pid的栈信息,子进程的栈信息输出会有问题,输出的信息没有参考价值

sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp

  1. 分析主线程的栈信息异常发现有一直在GC,日志中大量输出redis timeout ,初步认为是大量连接redis超时导致创建线程过多,导致最终OutOfMemoryError

  1. 停止服务进程,重启服务,观察运行,服务正常运行,第二天中午吃饭时间,突然监控系统再次发出cpu告警,在输出栈信息,信息与之前基本相同,还是没有实质性进展,先保存现场恢复正常服务于;

  1. 运维同时反馈有操作后导致服务宕机,联系运维同事,重新启动项一个节点服务,触发运维同事操作,发现新节点宕机,根据运维同事操作,输入详细日志信息,同时dump内存信息(服务节点dump内存信息太大),然后分析代码,发现在一处获取菜单处产生大量对象且无法回收,继续增加日志,输出菜单的详细信息,同时根据代码发现存在递归获取信息

然后再根据日志数据的取查看数据库,实际菜单数据只有不到一千条,日志输出的获取i12的行数数十万行,可以确定是在获取菜单这里形成死循环了,再次增加日志输出这里获取菜单的数据,根据日志输出排查数据库,找到异常数据:第一级菜单的父级菜单应该是null,数据库的最新值是一个四级菜单,修改异常数据,等待数据库缓存刷新,再次触发操作,操作正常,服务正常。

  1. 处理遗留问题

  1. 系统恢复正常后,跟领导确认,去掉全部运维账号的菜单权限,防止此类问题以后再次出现

  1. 排查数据库接口操作记录,确定运维同学是在前一天下午的18点修改的菜单数据,至此问题解决。

  1. 复盘

  1. 代码中慎用递归,尤其是线上环境

  1. 线上环境一定要设置oom自动保存信息

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32通过HTTP及SNTP同步网络时间

1、获取毫秒级时间 和普通系统函数相同 int get_sys_time_ms(void) {struct timeval tv_now;gettimeofday(&tv_now, NULL);int64_t time_us (int64_t)tv_now.tv_sec * 1000000L (int64_t)tv_now.tv_usec;return (int)(time_us/1000); } 2、延时毫秒级时间 void my_del…

【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法

文章目录熟悉Python懂R语言掌握SQL大数据基础数据库常用类型多表查询更多聚合函数distinctcase when窗口函数动态更新一行变多行调优内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第四章编程技能考查熟悉Python 懂R语言 掌握SQL 大数据基础 Hive时Hadoop的一个…

C++基础了解-10-C++ 判断

C 判断 一、C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 下面是大多数编程语言中典型的判断结构的一般形式: …

电商 SaaS 全渠道实时数据中台最佳实践

摘要:本文整理自聚水潭数据专家张成玉,聚水潭高级数据工程师应圣楚,在 FFA 2022 行业案例专场的分享。本篇内容主要分为四个部分:实时数仓的建设和发展数据中台的产品体系及架构实时计算的实践和优化对实时计算的未来展望Tips&…

2019年MathorCup数学建模B题环形穿梭车系统的设计与调度解题全过程文档及程序

2019年第九届MathorCup高校数学建模挑战赛 B题 环形穿梭车系统的设计与调度 原题再现: 整体求解过程概述(摘要) 环形穿梭车系统为集多种高新技术于一体的自动搬运设备,行驶和输送速度快、灵活性好、自动化程度高。但由于系统采用封闭式轨道&#xff0c…

成为AI架构师的三大能力

AI架构师的定义 “AI 架构师”是以深度学习为代表的第三次AI热潮所催生的新型复合型人才,它的产生最本质的驱动因素是AI产业化落地应用的蓬勃发展对人才的需求,深度学习突出的工程属性也特别需要复合型人才来驾驭。 从字面来看,AI架构师的“…

Pytorch深度学习实战3-8:详解数据可视化组件TensorBoard安装与使用

目录1 什么是Tensorboard?2 Tensorboard安装3 Tensorboard可视化流程4 Tensorboard可视化实例4.1 常量可视化4.2 特征图可视化1 什么是Tensorboard? 在深度学习领域,网络内部如同黑箱,其中包含大量的连接参数,这给人工…

续航乱标销量低迷! 零跑汽车短时“掉”电快 ?

【锋巢网】 进入3月,行业复苏的景象映入眼帘,但是新能源车企却有人欢喜有人愁。 近日,各大新能源车企公布了自家2月份的销量数据,整体来看,部分新能源车企在2月份的交付量战绩显著,涨幅颇高。其中&#x…

class01:VUE简介与实例挂载

目录一、VUE简介1. 介绍2. 学习内容3. 引入Vue4. 全局配置5. Vue Devtools安装二、挂载Vue实例一、VUE简介 1. 介绍 Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不…

九、CSS3新特性三

文章目录一、逐帧动画二、flex弹性盒子三、少量元素侧轴对齐方式四、折行侧轴对齐方式五、项目属性六、网格布局七、网格布局的对齐方式八、网格布局的项目合并一、逐帧动画 一张背景图,改变back-position-x的位置让他动起来 step-start 逐帧动画 animation: play …

宝塔webhook自动化打包vue项目时,npm不生效问题

文章目录📋前言🎯查看webhook配置的代码🎯测试代码,检查输出内容🎯解决方法📋前言 这篇文章主要是记录和解决在宝塔面板中,webhook自动化打包vue项目时,npm不生效问题。说来奇怪&am…

【DBC专题】-10-CAN DBC转换C语言代码Demo_接收Rx报文篇

案例背景(共15页精讲): 该篇博文将告诉您,CAN DBC转换C语言代码Demo,只需传递对应CAN信号关联参数,无需每个信号"左移"和"右移",并举例介绍:在CANoe/Canalyzer中CAPL中的应用&#xff…

【MIT 6.S081】Lab1: Xv6 and Unix utilities

Util概述sleeppingpongprimesfindxargs本Lab包括五个应用程序的实现,初步熟悉系统调用接口。用时约8h(我太菜辣)本Lab包括五个简单程序的实现,初步熟悉系统调用接口。 笔者用时约6h(我太菜辣) 概述 根据文…

mysql数据库之全局锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&#x…

【Day2】Numpy简单入门基础

NumPy 简单入门基础 我的另一篇文章 : Numpy介绍-深度学习:Numpy介绍-深度学习(Numpy介绍深度学习使用看这些足够了) import numpy as npmy_array np.array([1, 2, 3, 4, 5]) print(my_array)[1 2 3 4 5]print(my_array.shape)…

Kafka 多线程消费者

Kafka 多线程消费者多线程方案Kafka 0.10.1.0 后,Kafka Consumer 变为双线程的设计 : 用户主线程 : 启动 Consumer 的 main心跳线程 (Heartbeat Thread) : 定期对 Broker 发送心跳请求,探测消费者的存活性 (liveness)将心跳频率与主线程处理…

MQTT协议-取消订阅和取消订阅确认

MQTT协议-取消订阅和取消订阅确认 客户端向服务器取消订阅 取消订阅的前提是客户端已经通过CONNECT报文连接上服务器,并且订阅了一个主题 UNSUBSCRIBE—取消订阅 取消订阅的报文同样是由固定报头可变报头有效载荷组成 固定报头由两个字节组成,第一个…

2023年,当我们谈论架构时,我们要聊什么

架构是一个非常宽泛的话题,从组织结构上来说,涉及到前端、后端、运维;从软件设计上来说,涉及到需求分析、设计、编码、测试;从物理结构上来说,涉及到CDN、负载均衡、网关、服务器、数据库。当前一些架构方面…

奇淫技巧:阅读源码时基于一组快捷键,让我们知道身在何方!

一个十分蛋疼的问题 在我们阅读框架底层源码的时候,我们往往会一个方法一个方法的往下翻,翻了很久很快就会有这样的灵魂拷问:我从那个类(方法)来,我要到哪个(类)方法中去。这个时候…

RK3568平台开发系列讲解(显示篇) DRM显示系统组成分析

🚀返回专栏总目录 文章目录 一、DRM Framebuffer二、CRTC三、Planes四、Encoder五、Connector沉淀、分享、成长,让自己和他人都能有所收获!😄 📢让我们分析一下绿框中的五个部件,以及他们的联动。 一、DRM Framebuffer 与 framebuffer一样,是一片存放图像的内存区域,…