接口响应过慢怎样排查?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


服务变慢

生产环境变慢问题,变慢这个问题主要是感官上的变慢,究其原因有两方面服务器全局慢服务器局部慢

服务器全局慢

包括cpu 慢,内存慢,io/磁盘慢,io/网络慢。

服务器局部慢

指得是发现某一个或者多个服务很慢。

1.全局查询思路

  • cpu 慢
  • 内存慢
  • io/磁盘慢
  • io/网络慢

1 top 命令(进程,cpu,内存)

1.1 服务器整体情况(top)----- 进程,cpu,内存

在这里插入图片描述
top命令说明

  • 第 1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)
  • 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。一般情况下,只要没有僵死的进程,就没啥大问题。
  • 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
  • 第 4 行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量
  • 第 5 行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量
  • 第 6 行里面主要看 PID 和 COMMAND 这两个参数,其中 PID 就是进程 ID , COMMAND 就是执行的命令,能够看到比较靠前的两个进程都是 java 进程

在当前这个界面,按下数字键盘 1 能够看到各个 CPU 的详细利用率
在这里插入图片描述

1.2 cpu使用情况(vmstat)

在这里插入图片描述
在这里插入图片描述

1.3 内存(free)

在这里插入图片描述

1.4 磁盘(df)

在这里插入图片描述

1.5 磁盘io(iostat)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.局部查询思路

top 发现有问题的进程,对于进程进行查看,这里我只说java 进程的服务,cpu 标高,怀疑内存泄漏导致的full
gc 还有就是线程死锁,

jps -ln (查看java 进程)

在这里插入图片描述

jmap -histo {pid}

在这里插入图片描述
grep 一下GC 的信息,也可以查询GC 的 信息。(这里就能查询到是否都是FULL GC)

grep waiting on

(这里就可以查看到是否是有线程死锁的问题)

服务变慢排查思路:

  1. 是不是资源层面的瓶颈,硬件、配置环境之类的问题
  2. 针对查询类接口,是不是没有添加缓存,如果加了,是不是热点数据导致负载不均衡
  3. 是不是有依赖于第三方接口,导致因第三方请求拖慢了本地请求
  4. 是不是接口涉及业务太多,导致程序执行跑很久
  5. 是不是sql层面的问题导致的数据等待加长,进而拖慢接口
  6. 网络层面的原因?带宽不足?DNS解析慢
  7. 确实是代码质量差导致的,如出现内存泄漏,重复循环读取之类

相关推荐

  1. CPU 飙高系统反应怎么排查

    2023-12-23 20:24:02       34 阅读
  2. MySQL怎么排查sql语句,排查后一般怎么优化

    2023-12-23 20:24:02       15 阅读
  3. SQL问题排查

    2023-12-23 20:24:02       15 阅读
  4. npm安装依赖

    2023-12-23 20:24:02       6 阅读
  5. Mysql:cpusql查询方法

    2023-12-23 20:24:02       36 阅读
  6. Oracle 查询排查步骤

    2023-12-23 20:24:02       34 阅读
  7. MySQLSQL如何排查

    2023-12-23 20:24:02       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 20:24:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 20:24:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 20:24:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 20:24:02       20 阅读

热门阅读

  1. C++ lambda表达式

    2023-12-23 20:24:02       40 阅读
  2. 【Qt】qDebug() 输出16进制数的几种方法

    2023-12-23 20:24:02       41 阅读
  3. Python正则表达式元字符与组匹配模式

    2023-12-23 20:24:02       43 阅读
  4. LeetCode 1671. 得到山形数组的最少删除次数

    2023-12-23 20:24:02       49 阅读
  5. 5-Docker实例-安装php

    2023-12-23 20:24:02       43 阅读
  6. npm的介绍和使用

    2023-12-23 20:24:02       33 阅读
  7. Linux根目录下默认目录作用

    2023-12-23 20:24:02       41 阅读
  8. 事件相机角点检测:从原理到演示编程

    2023-12-23 20:24:02       40 阅读