<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          這些排查內(nèi)存問題的命令,你用過多少?

          共 2278字,需瀏覽 5分鐘

           ·

          2020-11-08 10:18




          我相信大家都遇到過內(nèi)存占用率過高的情況,在排查過程中,我們會(huì)用到一些命令或工具,下面來看下這些你都用過嗎?

          top 命令

          首先比較常用的就是 top 命令,是性能監(jiān)控的常用命令,該命令可以實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況。

          在這里簡(jiǎn)單說下每行的意義:

          第一行中 load average 為最近 1 分鐘、5 分鐘、15 分鐘的負(fù)載情況。

          第二行的 Tasks 為進(jìn)程的情況,如上圖所示就是系統(tǒng)目前有 126 個(gè)進(jìn)程,其中正在運(yùn)行(running)的進(jìn)程有 1 個(gè),有 125 個(gè)睡眠(sleeping)進(jìn)程,處于暫停(stopped)和僵尸(zombie)進(jìn)程沒有。

          第三行為 CPU 狀態(tài)信息,其中幾個(gè)屬性的意義如下:

          參數(shù)含義
          us用戶空間占用CPU的百分比
          sy內(nèi)核空間占用CPU的百分比
          ni用戶進(jìn)程空間內(nèi)改變過優(yōu)先級(jí)的進(jìn)程占用CPU百分比
          id空閑CPU百分比
          wa等待輸入輸出的CPU時(shí)間百分比
          hi硬中斷(Hardware IRQ)占用CPU的百分比
          si軟中斷(Software Interrupts)占用CPU的百分比
          st用于有虛擬cpu的情況,用來指示被虛擬機(jī)偷掉的cpu時(shí)間

          第四、五行為內(nèi)存信息,其參數(shù)含義如下:

          參數(shù)含義
          KiB Mem:total物理內(nèi)存總量
          KiB Mem:free空閑內(nèi)存總量
          KiB Mem:used使用的物理內(nèi)存總量
          KiB Mem:buff/cache用作內(nèi)核緩存的內(nèi)存量
          KiB Swap:total交換區(qū)總量
          KiB Swap:free空閑交換區(qū)總量
          KiB Swap:used使用的交換區(qū)總量
          KiB Swap:avail Mem可用于進(jìn)程下一次分配的物理內(nèi)存數(shù)量

          還可以通過 top -Hp pid 查看具體線程使用系統(tǒng)資源情況:

          vmstat 命令

          vmstat 命令可以展現(xiàn)給定時(shí)間間隔的服務(wù)器的狀態(tài)值,包括服務(wù)器的CPU使用率、內(nèi)存使用、虛擬內(nèi)存交換情況、IO讀寫情況。

          比如執(zhí)行 vmstat 2 3 命令,其中第一個(gè)參數(shù)是采樣的時(shí)間間隔數(shù)(單位為秒),第二個(gè)參數(shù)為采樣的次數(shù)。

          下面來介紹下每個(gè)參數(shù)到含義:

          procs 主要是進(jìn)程信息,有以下兩個(gè)字段:

          • r:等待運(yùn)行到進(jìn)程數(shù)
          • b:處于非中斷睡眠狀態(tài)的進(jìn)程數(shù)

          memory 主要是內(nèi)存信息,有以下四個(gè)字段:

          • swpd:虛擬內(nèi)存使用情況
          • free:空閑的內(nèi)存
          • buff:用來作為緩沖的內(nèi)存數(shù)
          • cache:緩存的內(nèi)存容量

          swap主要是交換分區(qū)信息,有下面兩個(gè)字段:

          • si:從磁盤交換到內(nèi)存的交換頁數(shù)量
          • so:從內(nèi)存交換到磁盤的交換頁數(shù)量

          io 主要是磁盤讀/寫信息,有以下兩個(gè)字段:

          • bi:發(fā)送到塊設(shè)備的塊數(shù)
          • bo:從塊設(shè)備接收到的塊數(shù)

          system 為系統(tǒng)信息,有如下字段:

          • in:每秒中斷數(shù)
          • cs:每秒上下文切換次數(shù)

          cpu 為 CPU 信息,主要有如下字段:

          • us:用戶 CPU 使用時(shí)間
          • sy:內(nèi)核 CPU 系統(tǒng)使用時(shí)間
          • id:空閑時(shí)間
          • wa:等待 I/O 時(shí)間
          • st:運(yùn)行虛擬機(jī)竊取的時(shí)間

          pidstat 命令

          pidstat 是一個(gè)進(jìn)程性能分析工具,用來實(shí)時(shí)查看進(jìn)程的 CPU、內(nèi)存、I/O 以及上下文切換等性能指標(biāo)。

          如果對(duì)命令不熟悉,可以使用 pidstat -help 來查看。

          下面對(duì)命令中的 options 參數(shù)進(jìn)行簡(jiǎn)單介紹:

          • -d:顯示各個(gè)進(jìn)程的 I/O 使用情況
          • -r:顯示各個(gè)進(jìn)程的內(nèi)存使用情況
          • -u:默認(rèn)的參數(shù),顯示各個(gè)進(jìn)程的 cpu 使用情況
          • -w:顯示每個(gè)進(jìn)程的上下文切換情況
          • -p:指定進(jìn)程號(hào)
          • -t:顯示進(jìn)程中線程的統(tǒng)計(jì)信息

          比如使用 pidstat -p 3286779 -r 2 3 命令就可以查看進(jìn)程的內(nèi)存使用情況,其中 -p 后面為進(jìn)程 ID,-r 表示查看內(nèi)存使用情況,2 為每 2 秒采樣一次,3 為采樣次數(shù)。

          下面對(duì)圖中的參數(shù)做下介紹:

          • minflt/s:任務(wù)每秒發(fā)生的次要錯(cuò)誤,不需要從磁盤中加載頁
          • majflt/s:任務(wù)每秒發(fā)生的主要錯(cuò)誤,需要從磁盤中加載頁
          • VSZ:虛擬地址大小,虛擬內(nèi)存使用 KB
          • RSS:常駐集合大小,非交換區(qū)內(nèi)存使用 KB
          • %MEM:進(jìn)程使用內(nèi)存的百分比
          • Command:拉起進(jìn)程對(duì)應(yīng)的命令

          使用 pidstat -p 3286779 -d 2 3 可以查看進(jìn)程 IO 情況,結(jié)果如下圖所示:

          這些字段的含義如下所示:

          參數(shù)含義
          kB_rd/s每秒進(jìn)程從磁盤讀取的數(shù)據(jù)量(以kB為單位)
          kB_wr/s每秒進(jìn)程向磁盤寫的數(shù)據(jù)量(以kB為單位)
          kB_ccwr/s每秒進(jìn)程向磁盤寫入時(shí)被取消的數(shù)據(jù)量(以kB為單位)

          還有其他的參數(shù)大家可以自己摸索下。

          除了通過上述的 Linux 命令來查看服務(wù)的內(nèi)存使用情況外,還有很多常用的 JDK 命令來查看 JVM 的內(nèi)存分配和使用情況,感興趣的可以閱讀下這篇文章:不可不知的 7 個(gè) JDK 命令

          總結(jié)

          本文主要對(duì)排查內(nèi)存問題中常用的 Linux 命令 top、vmstat、pidstat 進(jìn)行了簡(jiǎn)單講解,大家可以自己在本機(jī)進(jìn)行實(shí)踐。

          了解這些命令后會(huì)在 CPU、內(nèi)存占用過高問題的排查、程序性能調(diào)優(yōu)上會(huì)有很大的幫助。

          最好的關(guān)系就是互相成就,大家的在看、轉(zhuǎn)發(fā)連就是我創(chuàng)作的最大動(dòng)力。


          ? ? ? ?
          ???
          不可不知的 7 個(gè) JDK 命令
          一次完整的JVM堆外內(nèi)存泄漏故障排查記錄
          秒懂JVM的三大參數(shù)類型,就靠這十個(gè)小實(shí)驗(yàn)了

          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费黄色成人视频网站在线观看 | 美日韩三级片在线观看 | 影音先锋AV网址 | 成人激情性爱视频 | 精品国产成人a在线观看 |