Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1234776
  • 博文数量: 1096
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 11060
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-07 15:17
个人简介

linux工程师,RHCE

文章分类

全部博文(1096)

文章存档

2023年(84)

2022年(314)

2021年(251)

2020年(244)

2019年(176)

2018年(27)

我的朋友

分类: 系统运维

2023-03-06 11:08:28

 

在linux中,当占用过高的内存或者cpu时,会常常伴随着我们的服务处理变慢或者无响应,这个时候我们需要排查服务器中哪些进程占用过高导致的。或者有时候我们在测试我们的网站时,我们需要观察相关进程是否会出现内存增长过快。


top

top 命令包含更多的指标统计,相当于一个综合命令。

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。

通过top命令我们可以快速实时知道服务器中哪些进程会占用过高内存和CPU信息。

复制
# top top - 09:15:26 up 10:40, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 177 total, 1 running, 176 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 3.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863088 total, 489784 free, 585660 used, 787644 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1098596 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10146 root 20 0 162028 2288 1524 R 6.2 0.1 0:00.02 top 1 root 20 0 193908 7032 4212 S 0.0 0.4 0:02.74 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.18 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.05 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:01.36 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.23 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.22 watchdog/1 12 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/1 13 root 20 0 0 0 0 S 0.0 0.0 0:00.44 ksoftirqd/1 ...
							
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

当我们想查看消耗内存前3的进程,我们可以执行如下命令

复制
# top -o %MEM | head -n 3 top - 07:54:12 up 31 min, 1 user, load average: 0.01, 0.38, 0.43 任务: 297 total, 1 running, 296 sleeping, 0 stopped, 0 zombie %Cpu(s): 10.0 us, 10.0 sy, 0.0 ni, 80.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 3890.2 total, 1037.7 free, 1171.8 used, 1680.7 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 2467.0 avail Mem USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND 6310 root 20 0 4064524 277464 132776 S 5.6 7.0 0:23.08 gnome-s+ 6528 root 20 0 1137864 104216 67168 S 0.0 2.6 0:04.71 snap-st+ 5944 root 20 0 362476 90444 56248 S 0.0 2.3 0:13.51 Xorg
																																			
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

同理,我们可以使用如下命令查看占用 CPU 前 3 的进程。

我们也可以只查看某个具体进程的 top 信息。

复制
# top -p 12458 只查看 PID为 12458 的进程信息
top - 14:28:47 up 1 day, 15:34, 3 users, load average: 0.00,0.00,0.00
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 625344k total, 574124k used, 51220k free, 67024k buffers
Swap: 524280k total, Ok used, 524280k free, 409344k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12458 root 20 0 4520 1192 580 S 0.0 0.2 0:00.00 httpd
																																																					
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

ps

ps 命令是“process status”的缩写,ps 命令用于显示当前系统的进程状态。

使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。

复制
查找特定进程信息:
																																																																					
  • 1.
复制
# ps -aux | grep ssh root 1303 0.0 0.0 82468 1204 ? Ss Apr17 0:00 /usr/sbin/sshd root 3260 0.0 0.0 52864 572 ? Ss Apr17 0:00 /usr/bin/ssh-agent root 24188 0.0 0.0 112652 956 pts/0 S+ 11:39 0:00 grep --color=auto ssh ...
																																																																					
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
复制
我们可以使用带有 –sort 参数的 ps 命令按内存和 CPU 使用率对输出进行排序。
																																																																																	
  • 1.
复制
# ps aux --sort -%cpu USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1891 3.1 6.7 3992296 269128 ? Ssl 07:27 0:21 /usr/bin/gnom root 2186 1.8 4.1 1268748 167000 ? Sl 07:27 0:13 /snap/snap-st root 1362 1.5 1.1 455372 44384 ? Ssl 07:23 0:14 /usr/libexec/ root 1648 1.2 2.1 357848 87008 tty2 Sl+ 07:27 0:09 /usr/lib/xorg root 3696 1.0 0.1 19928 5720 pts/2 Ss 07:39 0:00 bash ...
																																																																																	
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

同理,我们可以使用如下命令按内存的使用率进行排序

复制
# ps aux --sort -%mem
																																																																																																	
  • 1.

我们可以根据我们应用程序的名字来获取内存和CPU的使用信

复制
# ps aux | grep -E "manage|PID" USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1891 3.1 6.7 3992296 269128 ? Sl+ 07:27 0:21 ./manage
																																																																																																	
  • 1.
  • 2.
  • 3.

pidstat

pidstat 是 sysstat 工具的一个命令,用于监控全部或指定进程的 cpu、内存、线程、设备 IO 等系统资源的占用情况。pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行 pidstat 将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

cpu使用情况统计(-u)

使用-u选项,pidstat将显示各活动进程的cpu使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样。

内存使用情况统计(-r)

使用-r选项,pidstat将显示各活动进程的内存使用统计:

复制
# pidstat -r -p 13084 2 // 以2秒为周期显示进程13084 的内存使用信息 Linux 2.6.32.12-0.7-default (linux) 06/18/12 _x86_64_ 15:08:18 PID minflt/s majflt/s VSZ RSS %MEM Command 15:08:19 13084 133835.00 0.00 15720284 15716896 96.26 core 15:08:20 13084 35807.00 0.00 15863504 15849756 97.07 core 15:08:21 13084 19273.87 0.00 15949040 15792944 96.72 core
																																																																																																											
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

以上各列输出的含义如下:

  • minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
  • majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
  • VSZ: 该进程使用的虚拟内存(以kB为单位)
  • RSS: 该进程使用的物理内存(以kB为单位)
  • %MEM: 该进程使用内存的百分比
  • Command: 拉起进程对应的命令

 

阅读(170) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~