总结下最近线上出现的两个问题:
1.系统崩溃,接口响应超时
2.每到整点,接口请求超时,过了一会自动恢复
先说下第一个问题的解决:
1).linux服务器下使用top命令查看服务器情况
![在这里插入图片描述](https://img-blog.csdnimg.cn/0d2812fd69114b059cf2c7e2f036c86e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWu-8jUw=,size_20,color_FFFFFF,t_70,g_se,x_16)
当时java CPU是飙到200+的
2).jstat -gcutil -t 25393 1000 查看GC情况
![在这里插入图片描述](https://img-blog.csdnimg.cn/ed425e07a28642a5b9008ae4794c3f64.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWu-8jUw=,size_20,color_FFFFFF,t_70,g_se,x_16)
发现线上FGC严重,分析可能是内存溢出
3).jmap -dump:format=b,file=aa.dump PID 生成堆内存快照,下载到本地
4).通过jdk自带的jvisualVM查看内存对象情况,当时线上堆文件达到14G,jvisualVM无法打开,在网上找了JProfiler才打开的,
![在这里插入图片描述](https://img-blog.csdnimg.cn/99b2d3e722994d4d84cb971c787a4cec.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWu-8jUw=,size_20,color_FFFFFF,t_70,g_se,x_16)
5).通过对占用内存最多的内进行分析定位到大概代码,然后(更具各自业务)对代码进行分析更改代码逻辑和编码解决问题。
第二个问题解决:
先讲下这个问题,这个问题刚开始是不好定位的,因为刚开始就反应系统有时候会卡,具体什么时候也不知道,从反应问题到我们查看问题中间是有耗时的,等我们再去查看问题,这个问题已经没有了(这个时候才想到线上监控多么重要)。反正反反复复折磨了很久最后才搞清楚整点会卡顿。
找了了问题就好分析了,整点蹲守,
1).linux服务器下使用top命令查看服务器情况
![在这里插入图片描述](https://img-blog.csdnimg.cn/2e28d2b984c24ca0b5e33a5fc8ba6fc4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWu-8jUw=,size_20,color_FFFFFF,t_70,g_se,x_16)
发现整点出现了两个mysqldump的数据备份,而且时间很长,那就能解释通为什么整点会卡顿
2).通过 ps -ef|grep 1000 查看是那个数据库在备份。
![在这里插入图片描述](https://img-blog.csdnimg.cn/db58483573cb43daab134b9249324273.png)
通过这个想到是不是存在数据库定时任务备份
3).crontab -l 查看所有定时任务,发现还真有整点备份这个东西(为什么会有呢???)
4).删除定时任务
crontab -l 表示列出所有的定时任务
crontab -r 表示删除用户的定时任务,当执行此命令后,**所有用户下面的定时任务会被删除**,执行
crontab -l后会提示用户:“no crontab for admin”
线上问题排查
最新推荐文章于 2024-05-31 10:46:10 发布