我们如何诊断一个耗资源的神秘进程?

开发 前端
查看系统总体状态top 或 htop:实时查看 CPU、内存使用情况。iotop:查看 IO 使用情况(需要 root 权限)。vmstat:检查 CPU、内存、磁盘 IO 等性能指标。

如何诊断占用过多 CPU、内存和 IO 等资源的神秘进程?

下图说明了 Linux 系统中的有用工具。

图片图片

01 初步排查

1. 查看系统总体状态

  • top 或 htop:实时查看 CPU、内存使用情况。
  • iotop:查看 IO 使用情况(需要 root 权限)。
  • vmstat:检查 CPU、内存、磁盘 IO 等性能指标。

2. 找出占用资源的主要进程

  • 使用 ps 查找占用最多资源的进程:
ps aux --sort=-%cpu | head -n 10   # 按 CPU 使用排序
ps aux --sort=-%mem | head -n 10   # 按内存使用排序
  • 使用 pidstat 查看进程的 CPU、内存和 IO 使用:
pidstat -p ALL 1
  • 使用 lsof 查看特定进程打开的文件描述符
lsof -p <PID>

02 具体分析问题进程

确定高资源使用进程后,进一步诊断其行为。

1. 检查进程是否存在高 CPU 占用

  • 使用 perf top 或 perf record(Linux)分析 CPU 热点。
  • 使用 strace 查看进程的系统调用:
strace -cp <PID>
  • 检查是否存在线程死循环:
top -H -p <PID>
  • 查看堆栈信息:
gstack <PID>  # Linux

2. 检查内存泄漏或异常

  • 使用 pmap 查看进程内存分布:
pmap -x <PID>
  • 使用 smem 分析进程的内存使用:
smem -P <ProcessName>
  • 检查内存增长趋势:
watch -n 1 cat /proc/<PID>/status

3. 分析 IO 使用

  • 使用 iotop 或 iostat 查看磁盘 IO:
iotop -o  # 查看 IO 活跃的进程
iostat -x 1  # 查看详细的磁盘 IO 性能
  • 使用 strace 查看进程是否频繁调用 IO 系统调用:
strace -p <PID> -e trace=open,read,write,fsync

4. 网络活动分析

  • 使用 netstat 或 ss 查看网络连接:
netstat -plant | grep <PID>
  • 使用 tcpdump 捕获网络流量:
tcpdump -i eth0 port <PORT>
  • 使用 iftop 实时监控网络带宽占用
责任编辑:武晓燕 来源: ByteByteGo
相关推荐

2021-04-19 10:47:11

NettyDemoI

2020-12-21 06:09:39

线程Java对象

2024-08-02 09:49:35

Spring流程Tomcat

2024-06-17 11:59:39

2024-07-15 08:25:07

2021-11-01 12:13:53

Linux僵尸进程

2015-09-17 13:26:56

线程数进程Linux

2011-05-27 17:51:00

Android

2010-04-13 00:02:22

Visual StudIDE

2021-03-11 12:15:37

Kubernetes云原生容器

2024-09-04 08:55:56

2013-04-25 09:55:21

进程线程

2021-03-13 12:54:50

Node进程Cron

2024-11-13 09:27:04

2021-07-21 05:22:12

Webpack 前端 JavaScript

2024-08-05 10:55:52

2016-10-08 09:35:26

2024-07-03 08:36:14

序列化算法设计模式

2022-04-06 07:51:21

数据库Web连接池

2016-08-23 10:17:42

点赞
收藏

51CTO技术栈公众号