最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

如何在 Linux 中查看最消耗内存和 CUP 的进程

XAMPP相关 admin 80浏览 0评论

在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
...








当我们想查看消耗内存前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     








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




# top -o %CPU | head -n 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








ps




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

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





查找特定进程信息:




# 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
...








我们可以使用带有 –sort 参数的 ps 命令按内存和 CPU 使用率对输出进行排序。




# 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

...

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

# ps aux –sort -%mem

我们可以根据我们应用程序的名字来获取内存和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

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

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

  • 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: 拉起进程对应的命令

转载请注明:XAMPP中文组官网 » 如何在 Linux 中查看最消耗内存和 CUP 的进程

您必须 登录 才能发表评论!