微信原文:系统后台服务变慢,怎样排查诊断?

微信公众号:小龙coding

关注选择星标,重磅干货,第一时间送达!

如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发

关注下方公众号【小龙coding】 回复【基于人工智能的校园助手】领取大厂面试精品项目,【助力礼包】领取鹅厂大佬秋招面试助力礼包。

前文

大家好,我是小龙。

事情是这样的,因为之前面试百度二面时被面试官问过这样一个场景题 “假如你项目后台服务突然变得很慢,你该怎样去排查和解决呢?”,当时没真正遇到过这种问题,所以只能根据自己的相关经验去 “吹” !,感觉回答的不是很到位。

正好最近在负责一个项目,今天测试时发现系统后台服务变的出奇的慢,于是便自己去排查诊断了一翻。这方面我也不太熟悉,就试着去检查了一番。在此分享一下我当时排查的过程,感觉非常有意义。

一般在公司中,对实现一个系统完善的日志性能等监控系统都比较重视,因为当线上线下出现问题时,最好最快的方式就是排查日志,查看相关监控系统。

然后我还利用了一些Java诊断工具去监控系统发生的异常,比如JFR,随时监控系统是否出现大量某种异常,如果有,那么这个异常可能就是突破点。

在你看来,可能做这些额外的监控系统,日志可能比较浪费时间,没必要。但是在我个人项目中,我特别重视这一点,因为事前做好充分准备,当真正发生了故障,我便可以凭借此快速定位到问题。

排查思路

查看错误日志

回过来,我开始想的就是可能是后台服务程序自身出了问题,于是最先想到的就是去检查应用本身的错误日志,从部分日志并没有发现有什么明显的异常,然后在并发量太大的情况下,查日志也会很慢。

CPU

然后到后台服务器监控平台,查看系统资源是否达到上限,例如:CPU、内存、磁盘、I/O、网络带宽等。我是从上到下看的,网络,系统,应用。任何一个环节都有可能有问题,首先看网络监控情况,然后看系统(内存,cpu,负载 )情况。此处补充如何排查CPU、内存相关问题。

  1. 启动程序之前通过 HeapDumpOnOutOfMemoryError 和 HeapDumpPath 这两个参数开启堆内存异常日志

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=
    
  2. 从日志从发现异常

  3. 再通过 top -Hp pid 查看进程下所有具体线程占用系统资源情况

  4. 再通过 jstack pid 查看具体线程的堆栈信息(线程ID、状态(wait,sleep),是否持有锁)

  5. 再通过 jmap 查看堆内存的使用情况 jmap -heap pid

  6. 通过以上命令分析基本可以看出什么问题导致内存上升,现在分析问题产生的原因

  7. 我们在启动时,已经设置了 dump 文件,通过 MAT 打开 dump 的内存日志文件,分析即可。

然后,我直接大致定位到具体应用,再把线程dump出来,根据以上一系列操作,查看线程是否存在问题,有没有死锁,卡代码等问题。

磁盘

对于服务器磁盘空间问题,当时实习时,也有幸遇到过,积累了一些经验,在此顺便做个分享:

查看磁盘空间

df -h

发现某个路径已经占了100%,切换根目录查看空间

du -h --max-depth=1

然后再看该目录下哪个文件占用空间最大,然后切换到该目录,继续使用以上命令查看,以此循环直到找到问题,最后发现日志打满了。

然后磁盘有一些目录基本为空,而这个目录几乎达到100%,于是建立了一个软链接指向空目录,顺便删除了一些废弃日志。

然后重新测试,还是不太行。

继续往下排查。。。。

内部服务器配置,SQL等

接着去检查应用服务器(Tomcat)的线程池配置是否合理,看了一下请求的排队现象是否严重,如果严重则需要重新设置合理的线程池。同样,检查一下数据库的连接池设置是否合理,增大连接池设置,同时检查一下是否有慢sql,如果有慢sql,则进行优化(优化方案是查看执行计划,设置合理的索引等)

对于慢SQL如何优化,此前写过一篇文章专门介绍,此处不过多赘述。然后发现一些SQL存在一些问题,修正了一翻,但是问题也不太大,不是主要原因,于是,接着往下分析。

字节面试官:一条sql执行慢的原因?如何优化?

服务调用

由于分布式服务一般都是服务治理的,可以看整个调用链的时间图,于是我去查看了访问慢的服务的调用链,查看一下调用链中的每一步响应时间是否合理,发现有个服务响应时间明显长于其他,然后去查看其中的问题,排查了一个超时的服务,发现是Redis大量连接超时,我去,之前为啥没想到。然后又去看为啥Redis大量连接超时,最后发现是网络的问题,然后又去排查网络相关的问题。

然后我去找了临近的防火墙看对应服务器的并发连接数是否新建连接/半开连接超高,或者有突发流量挤占了资源。后来重启了有问题的服务器,就谜一样的解决了。

虽然感觉有点乌龙,但是我还是想给大家分享一下排查问题的思路,当我们遇到问题时,可以从哪些地方着手考虑。当然,我也是半吊子,不过大家可以一起学习探讨,如何更优更快更直接找到问题所在。

评论区欢迎留言,下面有个 ”写留言“ 哟!!!

相逢必是缘分,希望大家给个小小的关注!

如果这篇文章对您有所帮助,或有所启发,可以扫描上方二维码关注一下,更多优质好文等您来探索,爱你哟~

求一键三连:希望转发在看分享给更多同学哟~

公众号:大厂进阶指南,专注分享后端技术、校招面试求职~

粉丝福利:后台回复【助力礼包】领取校招求职全套攻略;回复【基于人工智能的智慧校园助手】领取校招求职精品项目。

往期精彩回顾:

《面试笔记》——JVM终结篇(吊打系列)

《面试笔记》——MySQL终结篇(30问与答)

Redis基础篇(万丈高楼平地起):核心底层数据结构

字节面试官:一条sql执行慢的原因?如何优化?

系统后台服务突然变慢,怎样排查诊断?相关推荐

  1. 后台服务出现明显“变慢”诊断思路

    一.首先,需要对这个问题进行更加清晰的定义: (1).服务是突然变慢还是长时间运行后观察到变慢?类似问题是否重复出现? (2)."慢"的定义是什么,我能够理解是系统对其他方面的请求 ...

  2. 生产环境系统突然访问速度变慢问题排查

    问题描述: 系统突然访问比较慢,所有模块功能都响应比较慢. 1.查看每个host的当前连接数和总连接数 SELECT * FROM performance_schema.hosts; 2.查看数据库连 ...

  3. 后台服务出现明显“变慢”,谈谈你的诊断思路?

    JFR监控应用是否大量出现了某种类型的异常. GC日志里面是否观察到Full GC等恶劣情况出现. 用jstack等工具检查是否出现死锁.

  4. 利用端口,进程,文件,服务和日志信息来排查系统安全

    提示:主要是对主机系统进行安全排查操作 文章目录 前言 一.查看系统进程`ps` <1>ps是什么 <2>使用ps 二.网络接口与连接`netstat` <1>ne ...

  5. android远程控制(三)----通过后台服务实现系统点击事件模拟

    整合后台服务和驱动代码注入 Home键的驱动代码: /dev/input/event1: 0001 0066 00000001 /dev/input/event1: 0000 0000 0000000 ...

  6. 微信小程序驾校教培服务系统+后台管理系统|前后分离VUE

    <驾校教培服务系统+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采用前后 ...

  7. linux查看系统后台,求助,如何查看后台服务

    求助,如何查看后台服务 发布时间:2013-12-03 18:38:19来源:红联作者: 本人是新手 我用的是fedora19 想看看后台都有哪些服务在运行 但是service --status-al ...

  8. miui系统神隐模式导致app后台服务无法连接网络

    最近在一个推送项目中遇到了一些问题,发现小米手机无法收到推送,很奇怪,看了日志发现,日志中出现很多网络问题,想到有可能和神隐模式有关 于是写了个demo验证我的猜测,service中的代码如下: 打印 ...

  9. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  10. 苹果系统服务器状态在哪里,详细解读iPhone上的系统定位服务

    原标题:详细解读iPhone上的系统定位服务 自从GPS功能加入智能手机之后,世界仿佛一下子就变小了,只要手上拿着手机,似乎没有什么地方是我们所不能到达的.但GPS定位服务的出现也带来了隐私的安全问题 ...

最新文章

  1. 禁止拖放对象文本被选择
  2. OVS之vhost-net中VM通信(十)
  3. 配置ADB到Windows环境变量
  4. pdfparser java_如何使用java从PDF中提取内容?
  5. Google Hangouts支持使用Firefox WebRTC
  6. javascript的全局变量
  7. WinForm邮件内容编辑器的简单实现
  8. OAuth 2.0 - Authorization Code授权方式详解
  9. 【Spring] Spring boot 报错 Unable to start ServletWebServerApplicationContext due to missing ServletWe
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园订餐系统
  11. 思科警告:IOS 路由器中含有多个严重缺陷,可导致“系统完全受陷”
  12. 使用PS从图片中抠取签章部分
  13. 雨棚板弹性法计算简图_悬挑雨棚板结构计算小工具Exce版
  14. word去掉标题前面的黑点
  15. app支付宝接入流程图_Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)...
  16. cpu上干硅脂怎么清理_电脑清灰CPU怎么涂硅脂 导热硅脂涂抹方法教程
  17. 【Godot】通过属性检查器显示对应节点的脚本属性
  18. 大气辐射学期中知识点总结
  19. P4379 [USACO18OPEN]Lemonade Line
  20. C#测试调用PaddleOCRSharp模块识别图片文字

热门文章

  1. Python语音增强
  2. ubuntu使用remmina链接window服务器
  3. Pytest教程__定制allure报告(12)
  4. YOLO目标检测——野生猫科动物图像数据集(虎豹狮等)下载分享
  5. Unity用户手册-Mesh合批
  6. 小升初数学考试可以用计算机吗,正规小升初数学试卷及答案
  7. Java+springboot+Mysql停车微信小程序小程序-计算机毕业设计源码92714
  8. cpp map 获取所有 key_Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型 - 霸道流氓...
  9. html(结构)+css(表现)+js(行为)
  10. a100高性能服务器,英伟达发布A100 PCIe计算加速卡