生产问题总结(集群或单节点挂掉)

2024-02-26 03:08

本文主要是介绍生产问题总结(集群或单节点挂掉),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.问题

最近一周真是不太平,应用几乎每天都会挂,而且还每天的原因都不一样

2.以下就几种原因简单的说下

1)内存溢出

现象:内存告警,拿不到数据库连接,高full gc

分析:增加jvm参数,full gc时生成dump日志,分析dump日志,发现有一个查询占了内存的60+%。。。,看内存占比前几位的全是string对象,而且全是重复的,

那么就直接去看这个查询啊,一看这个查询的sqlmap,发现里面用了in,而当时生产环境这条sql in后面带了20000+的id去查询db,而db根据id来分库分表,然后根据id,这个sql会落到其中的700+张表,呵呵,那么问题来了,这台应用就会建立700+的db链接和700+的prepareStatement,大量的string对象其实就是这个prepareStatement,每个占了内存的0.03%,700+就占了差不多21%,进而导致整个应用内存吃紧,最终OOM

2)还tm是内存溢出

现象:内存告警,高full gc

分析:还是看应用的dump日志,还是发现有个查询占用了大量内存,不过这次和上次的问题不一样了。。。查询里面用了ibatis的内存分页,而非常悲剧的是,这条sql查询的结果集有600W+,而且查的是整条记录,所以内存再次撑爆。。。

3)服务器内存告警

现象:收到服务器内存监控告警

  分析,立马去服务器上执行top命令,看内存的使用情况,发现应用的进程占了40%左右的内存,排在第二位,而排在第一位的居然是一个root进程,占了50%左右的内存,导致应用的内存不够用,后来查了下,发现是中间件组做的一个日志采集服务。。。什么鬼,坑死了


3.总结

1.系统宕机时,先看下应用的日志是否有OOM的异常,如果有,看应用的dump日志,分析导致OOM的原因;如果没有OOM,则看服务器当时的内存使用情况,看是不是有别的进程占用了太多的服务器的资源,导致应用无法获取资源;

2.写sql时一定要注意,就拿我们的应用来说,ORM框架用的ibatis,一般来说,ibatis的内存分页不建议使用,因为它是将结果集一次全部load如内存,然后再在内存中分页将结果返回,当时结果集很大时,会耗尽系统的内存;sql中的in查询也是,不建议使用,如果非要使用的话,建议限制下in后面所带字符串的数量,比如不能超过1000个;总之一个要控制sql本身的长度,同时也要注意下控制结果集的大小,结果集很大时建议采用分页查询,避免一次查询出过多的数据

这篇关于生产问题总结(集群或单节点挂掉)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/747539

相关文章

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

《解决java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList错误的问题》当你尝试将RandomAccessSubList... 目录Java.util.RandomAccessSubList cannot be cast to java.