0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Linux中查看相关进程是否会出现内存增长过快的问题呢

冬至子 来源:Linux码农 作者:Linux码农 2022-11-16 16:47 次阅读

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

<pre><br data-filtered="filtered"/>pre>

<pre><br data-filtered="filtered"/>pre>

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

<pre><br data-filtered="filtered"/>pre>

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

<pre><br data-filtered="filtered"/>pre>

<pre><br data-filtered="filtered"/>pre>

ps

<pre><br data-filtered="filtered"/>pre>
ps 命令是“process status”的缩写,ps 命令用于显示当前系统的进程状态。

使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。
<pre><br data-filtered="filtered"/>pre>

查找特定进程信息:

<pre><br data-filtered="filtered"/>pre>

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

<pre><br data-filtered="filtered"/>pre>

<pre><br data-filtered="filtered"/>pre>

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

<pre><br data-filtered="filtered"/>pre>

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 sysstat工具工具个命令命令命令命令命令命令命令监控的的的的的的的的,,,内存,,线程,设备设备设备设备等显示自上次运行应命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需要的统计信息。

**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),次缺页错误次数意即虚拟内存地址映射生成物理内存地址生成的页错误次数
  • majflt/s: 每秒钟主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这种page fault为major page fault,一般在缓存内生产
  • VSZ:应该使用的虚拟内存(以kB为单位)
  • RSS: 该进程使用的物理内存(以kB为单位)
  • %MEM: 该进程使用内存的百分比
  • 命令:拉起程序对应的命令

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10451

    浏览量

    206583
  • RSS
    RSS
    +关注

    关注

    1

    文章

    32

    浏览量

    12177
  • LINUX内核
    +关注

    关注

    1

    文章

    311

    浏览量

    21389
收藏 人收藏

    评论

    相关推荐

    Linux进程间如何实现共享内存通信

    这次我们来讲一下Linux进程通信中重要的通信方式:共享内存作为Linux软件开发攻城狮,进程间通信是必须熟练掌握的重要技能,而共享
    发表于 04-26 17:14 573次阅读

    Linux下查询进程占用的内存方法总结

    今天浩道跟大家一篇关于运维牛人如何在Linux下挖出吃内存进程,可以说是相当干的一个运维技能了,一起看看吧!
    发表于 07-27 10:51 9296次阅读
    <b class='flag-5'>Linux</b>下查询<b class='flag-5'>进程</b>占用的<b class='flag-5'>内存</b>方法总结

    Linux下常用的查看进程及强制关掉进程方法

    PS命令介绍的出现,它是用来准确找到你想要关掉的进程的ID号的实用命令来的。 3、PS命令:查看某程序相关进程信息。  客户打电话来投诉,
    发表于 11-14 14:08

    Linux 查看进程和删除进程

    ps 命令用于查看当前正在运行的进程。grep 是搜索例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程
    发表于 04-24 00:04

    Linux上对进程进行内存分析和内存泄漏定位

    Linux产品开发过程,通常需要注意系统内存使用量,和评估单一进程内存使用情况,便于我们选取合适的机器配置,来部署我们的产品。
    发表于 07-09 08:15

    linux内存进程查看

    用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看
    发表于 07-16 06:28

    linux进程位置查看

    linux下使用top命令可以查看进程,但是单从文件名无法定位到进程的位置。有如下两种方法:
    发表于 07-25 07:48

    为什么会出现LINUX僵尸进程

    僵尸进程出现在父进程没有回收子进程的PCB的时候,这个时候子进程已经结束,但是父进程没有回收他,
    发表于 08-07 06:48

    【工程源码】Linux 查看进程和删除进程

    (前提是要有这个东西,例如在装了 tomcat 的前提下, 输入 tomcat 的 to 按 tab)。ps 命令用于查看当前正在运行的进程。grep 是搜索例如: ps -ef | grep
    发表于 02-23 20:05

    linux系统进程怎么查看与控制

    linux系统进程查看与控制
    发表于 05-28 11:02

    哪些进程会占用我们过多的内存和CPU信息?如何查看

    ,当服务的内存占用过多或者在使用时,会经常伴随着 cpu 的处理测试慢变或者无响应,这个时候我们排在服务器进程占用的启动的。或者我们需要我们在
    发表于 06-20 18:12

    使用Linux命令lsof查看进程打开和查看文件的说明

    linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用对调试文件有很好的帮助和精准定位问题
    发表于 10-28 08:00 0次下载

    内存条坏了电脑会出现什么现象

    内存条坏了电脑会出现什么状况呢,下面我们来告诉你吧。内存条坏了电脑会出现以下状况:
    发表于 06-17 10:33 3.4w次阅读

    如何查看相机cmos是否损伤

    如何查看相机cmos是否损伤  相机 CMOS 损坏是常见的问题,它可能会在使用相机时出现问题,例如花屏或黑屏。您可以遵循以下步骤来确认相机 CMOS 是否损坏。 1. 观察相机屏幕
    的头像 发表于 09-05 17:39 1.2w次阅读

    linux查看weblogic进程

    Linux操作系统中,WebLogic是一种常用的Java应用服务器,用于部署和管理企业级Java应用程序。为了确保WebLogic服务器正常运行,有时我们需要查看WebLogic进程以了解其状态
    的头像 发表于 12-05 16:07 737次阅读