0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Linux中查看相關(guān)進(jìn)程是否會(huì)出現(xiàn)內(nèi)存增長(zhǎng)過快的問題呢

冬至子 ? 來源:Linux碼農(nóng) ? 作者:Linux碼農(nóng) ? 2022-11-16 16:47 ? 次閱讀

linux中,當(dāng)占用過高的內(nèi)存或者cpu時(shí),會(huì)常常伴隨著我們的服務(wù)處理變慢或者無響應(yīng),這個(gè)時(shí)候我們需要排查服務(wù)器中哪些進(jìn)程占用過高導(dǎo)致的?;蛘哂袝r(shí)候我們?cè)跍y(cè)試我們的網(wǎng)站時(shí),我們需要觀察相關(guān)進(jìn)程是否會(huì)出現(xiàn)內(nèi)存增長(zhǎng)過快。

top

top 命令包含更多的指標(biāo)統(tǒng)計(jì),相當(dāng)于一個(gè)綜合命令。

top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況。

通過top命令我們可以快速實(shí)時(shí)知道服務(wù)器中哪些進(jìn)程會(huì)占用過高內(nèi)存和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
...


當(dāng)我們想查看消耗內(nèi)存前3的進(jìn)程,我們可以執(zhí)行如下命令


top -o %MEM | head -n 3

top - 07:54:12 up 31 min, 1 user, load average: 0.01, 0.38, 0.43
任務(wù): 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 的進(jìn)程

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

top -o %CPU | head -n 3

我們也可以只查看某個(gè)具體進(jìn)程的 top 信息


top -p 12458 只查看 PID為 12458 的進(jìn)程信息

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 命令用于顯示當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)。

使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多的資源等等。
<pre><br data-filtered="filtered"/>pre>

查找特定進(jìn)程信息:

<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 參數(shù)的 ps 命令按內(nèi)存和 CPU 使用率對(duì)輸出進(jìn)行排序。

<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

...

同理,我們可以使用如下命令按內(nèi)存的使用率進(jìn)行排序

# ps aux --sort -%mem

我們可以根據(jù)我們應(yīng)用程序的名字來獲取內(nèi)存和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

**數(shù)據(jù)統(tǒng)計(jì)**

pidstat sysstat工具工具個(gè)命令命令命令命令命令命令命令監(jiān)控的的的的的的的的,,,內(nèi)存,,線程,設(shè)備設(shè)備設(shè)備設(shè)備等顯示自上次運(yùn)行應(yīng)命令以后的統(tǒng)計(jì)信息。用戶可以通過指定統(tǒng)計(jì)的次數(shù)和時(shí)間來獲得所需要的統(tǒng)計(jì)信息。

**cpu使用情況統(tǒng)計(jì)(-u)**

使用-u選項(xiàng),pidstat將顯示各個(gè)活動(dòng)進(jìn)程的cpu使用統(tǒng)計(jì),執(zhí)行"pidstat -u"與單獨(dú)執(zhí)行"pidstat"的效果一樣。

**內(nèi)部使用情況統(tǒng)計(jì)(-r)**

使用-r選項(xiàng),pidstat將顯示各個(gè)活動(dòng)進(jìn)程的內(nèi)存使用統(tǒng)計(jì):

pidstat -r -p 13084 2 // 以2秒為周期顯示進(jìn)程13084 的內(nèi)存使用信息

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: 每秒一次缺頁錯(cuò)誤次數(shù)(minor page faults),次缺頁錯(cuò)誤次數(shù)意即虛擬內(nèi)存地址映射生成物理內(nèi)存地址生成的頁錯(cuò)誤次數(shù)
  • majflt/s: 每秒鐘主缺頁錯(cuò)誤次數(shù)(major page faults),當(dāng)虛擬內(nèi)存地址映射成物理內(nèi)存地址時(shí),相應(yīng)的page在swap中,這種page fault為major page fault,一般在緩存內(nèi)生產(chǎn)
  • VSZ:應(yīng)該使用的虛擬內(nèi)存(以kB為單位)
  • RSS: 該進(jìn)程使用的物理內(nèi)存(以kB為單位)
  • %MEM: 該進(jìn)程使用內(nèi)存的百分比
  • 命令:拉起程序?qū)?yīng)的命令

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10813

    瀏覽量

    210880
  • RSS
    RSS
    +關(guān)注

    關(guān)注

    1

    文章

    33

    瀏覽量

    12319
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21608
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下常用的查看進(jìn)程及強(qiáng)制關(guān)掉進(jìn)程方法

    PS命令介紹的出現(xiàn),它是用來準(zhǔn)確找到你想要關(guān)掉的進(jìn)程的ID號(hào)的實(shí)用命令來的。 3、PS命令:查看某程序相關(guān)進(jìn)程信息?! 】蛻舸螂娫拋硗对V,
    發(fā)表于 11-14 14:08

    Linux 查看進(jìn)程和刪除進(jìn)程

    ps 命令用于查看當(dāng)前正在運(yùn)行的進(jìn)程。grep 是搜索例如: ps -ef | grep java表示查看所有進(jìn)程里 CMD 是 java 的進(jìn)程
    發(fā)表于 04-24 00:04

    Linux上對(duì)進(jìn)程進(jìn)行內(nèi)存分析和內(nèi)存泄漏定位

    Linux產(chǎn)品開發(fā)過程,通常需要注意系統(tǒng)內(nèi)存使用量,和評(píng)估單一進(jìn)程內(nèi)存使用情況,便于我們選取合適的機(jī)器配置,來部署我們的產(chǎn)品。
    發(fā)表于 07-09 08:15

    linux內(nèi)存進(jìn)程查看

    用 'top -i' 看看有多少進(jìn)程處于 Running 狀態(tài),可能系統(tǒng)存在內(nèi)存或 I/O 瓶頸,用 free 看看系統(tǒng)內(nèi)存使用情況,swap 是否被占用很多,用 iostat 看看
    發(fā)表于 07-16 06:28

    linux進(jìn)程位置查看

    linux下使用top命令可以查看進(jìn)程,但是單從文件名無法定位到進(jìn)程的位置。有如下兩種方法:
    發(fā)表于 07-25 07:48

    哪些進(jìn)程會(huì)占用我們過多的內(nèi)存和CPU信息?如何查看

    ,當(dāng)服務(wù)的內(nèi)存占用過多或者在使用時(shí),會(huì)經(jīng)常伴隨著 cpu 的處理測(cè)試慢變或者無響應(yīng),這個(gè)時(shí)候我們排在服務(wù)器進(jìn)程占用的啟動(dòng)的?;蛘呶覀冃枰覀?cè)?b class='flag-5'>
    發(fā)表于 06-20 18:12

    使用Linux命令lsof查看進(jìn)程打開和查看文件的說明

    linux命令 — lsof 查看進(jìn)程打開那些文件 或者 查看文件給那個(gè)進(jìn)程使用對(duì)調(diào)試文件有很好的幫助和精準(zhǔn)定位問題
    發(fā)表于 10-28 08:00 ?0次下載

    linux進(jìn)程怎么查看

    Linux系統(tǒng),每個(gè)程序啟動(dòng)后可以創(chuàng)建一個(gè)或多個(gè)進(jìn)程。例如,提供Web服務(wù)的httpd程序,當(dāng)有大量用戶同時(shí)訪問Web頁面時(shí),httpd程序可能會(huì)創(chuàng)建多個(gè)進(jìn)程來提供服務(wù)。
    發(fā)表于 05-22 08:56 ?852次閱讀
    <b class='flag-5'>linux</b>的<b class='flag-5'>進(jìn)程</b>怎么<b class='flag-5'>查看</b>

    內(nèi)存條壞了電腦會(huì)出現(xiàn)什么現(xiàn)象

    內(nèi)存條壞了電腦會(huì)出現(xiàn)什么狀況,下面我們來告訴你吧。內(nèi)存條壞了電腦會(huì)出現(xiàn)以下狀況:
    發(fā)表于 06-17 10:33 ?3.6w次閱讀

    虛擬機(jī):查看進(jìn)程內(nèi)存和CPU占用的方法

    虛擬機(jī):查看進(jìn)程內(nèi)存和CPU占用的方法
    的頭像 發(fā)表于 06-22 11:06 ?8393次閱讀

    ipcs命令:用于查看Linux進(jìn)程間通信設(shè)施的狀態(tài)

    ? 1.命令簡(jiǎn)介 ipcs 命令用于查看 Linux 進(jìn)程間通信設(shè)施的狀態(tài),包括消息列表、共享內(nèi)存和信號(hào)量的信息。可以幫助開發(fā)人員定位進(jìn)程
    的頭像 發(fā)表于 02-02 11:10 ?2531次閱讀

    何在Linux使用ps/pstree/top命令查看進(jìn)程

    Linux 程序的運(yùn)行實(shí)例稱為進(jìn)程。有時(shí)在Linux工作時(shí),您可能需要找出當(dāng)前正在運(yùn)行的進(jìn)程。
    的頭像 發(fā)表于 12-05 17:07 ?1774次閱讀

    何在Linux查看隱藏文件

    在windows可以查看隱藏的文件。在Linux也可以查看隱藏文件且非常容易。要查看隱藏文件運(yùn)行`ls -a`命令即可。
    的頭像 發(fā)表于 01-04 17:31 ?1.6w次閱讀

    如何查看相機(jī)cmos是否損傷

    如何查看相機(jī)cmos是否損傷? 相機(jī) CMOS 損壞是常見的問題,它可能會(huì)在使用相機(jī)時(shí)出現(xiàn)問題,例如花屏或黑屏。您可以遵循以下步驟來確認(rèn)相機(jī) CMOS 是否損壞。 1. 觀察相機(jī)屏幕
    的頭像 發(fā)表于 09-05 17:39 ?1.8w次閱讀

    linux查看weblogic進(jìn)程

    Linux操作系統(tǒng),WebLogic是一種常用的Java應(yīng)用服務(wù)器,用于部署和管理企業(yè)級(jí)Java應(yīng)用程序。為了確保WebLogic服務(wù)器正常運(yùn)行,有時(shí)我們需要查看WebLogic進(jìn)程
    的頭像 發(fā)表于 12-05 16:07 ?1766次閱讀