linux的負載情況查看


1、 w或者uptime都可以直接展示負載

    $uptime

      09:32:14 up 695 days, 23:42, 2 users, load average: 0.00, 0.01, 0.05

    $w
      09:32:00 up 695 days, 23:42, 2 users, load average: 0.00, 0.01, 0.05

      其中load average分別對應過去的1分鍾、5分鍾、15分鍾的負載均衡值

2、top 查看服務器負載均衡

    

    top 指令能夠清晰的展示出系統的狀態,而且是實時監控的       q:退出

    Tasks 行展示的是目前的線程使用情況,要注意的是zombie,表示僵屍進程,不為0則表示有進程出現問題

      Cpus 行展示了當前的CPU狀態,us標識用戶進程占用的cpu比例,sy代表內核進程占用的比例,id表示空閑的CPU百分比

        wa代表IO等待所占用的CPU時間的百分比,wa占用超多30%則表示IO壓力大

    Mem 當前內存的狀態,total標識總共的,free代表剩余的,used代表已使用的 buffers是目錄緩存

    Swap行同Mem行,cached表示緩存,用戶已打開的文件。如果Swap的used很高,則表示系統內存不足。

    top下的指令:

      1(指令):查看服務器有多少CPU,以及每個CUP的使用情況,一般情況下,服務器的合理負載是CPU核數*2,超過了就說明服務器的運行有一定的壓力

      shift + "c" :進程按CPU使用率從大到小排序

      shift + "p" : 進程按內存使用率從大到小排序

3、 iostat命令

    

 

    top命令是不夠的,因為它僅能展示CPU和內存的使用情況,對於負載的另一個原因IO沒有清晰明確的展示

    iostat可以了解IO的開銷 

    指令:iostat -x 1 10   -x表示顯示所有參數的信息,1表示每隔1秒監控一次,10 表示共監視10次

    其中:rsec/s (r/s)表示讀入,wsec/s (w/s)表示每秒寫入,兩個參數某一個表示磁盤IO有很大壓力,util表示IO使用率,如果接近100%,表示IO滿負載運轉。

4、 相關指令:

    a、 查看磁盤:

        df -h     , df 命令用於顯示磁盤分區上的可使用磁盤空間。默認單位是kb -h 使用-h選項以KB以上的單位來顯示,可讀性高 

    b、 查看內存大小:

        free -h   / free -m

        

 

        其中 used - buff/cache  反應的是被程序真真實實吃掉的內存

        而   free + buff/cache  反應的是可以挪用的內存總數

 

    c、 查看cpu

        cat /proc/cpuinfo   讀取cpu內存詳情

        grep "model name" /proc/cpuinfo | wc -l   讀取cpu個數

    d、 查看系統內存

        cat /proc/meminfo      ------------------------------------proc 文件下邊記錄着很多cpu、內存信息

    e、 查看每個進程的情況

        cat /proc/5346/status     5347是pid       ----------------proc 文件下邊有很多都是進程的記錄

    f、 查看復雜

        w  / uptime

    g、 查看查看服務器負載情況

        top 

5、性能監視sar指令

    sar -u : 顯示cpu信息,-u 是sar的默認選項,改輸出以百分比顯示cpu的使用情況

    sar 5 10 : sar 以每5秒間隔取得10次樣本

    sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } :sar 提供6中不同的語法來顯示信息 

6、查看命令歷史(含時間戳)

    這個很重要,可以查看歷史的指令,來學習指令

    export HISTTIMEFORMAT='%F %T ';history| more

7、查看文件夾和文件的大小

    du -h --max-depth=0 dm 查看dm目錄大小

    du -h --max-depth=1 dm 查看dm目錄大小,以及dm各文件文件夾的大小

    du -h --max-depth=0 查看當前文件夾大小

 

8、linux 負載高,主要是CPU的使用、內存的使用、IO消耗三部分。

9、查詢linux 負載高,檢查

     a、w 或者 uptime 來展示負載

           

       load average 分別對應過去1分鍾、5分鍾、15分鍾的負載平均值

        load :是計算機干活多少的度量(WikiPedia:the system Load is a measure of the amount of work that a compute system is doing)

              簡單的說就是進程隊列的長度。loand average 就是一段時間(1分、5分、15分)內的平均Load

        如何判斷系統是否已經over Load :

            對一般的系統來說,根據cpu數量去判斷。如果平均負載始終在1.2以下,而你有2顆cup的機器。那么基本不會出現cpu不夠用的情況。

           也就是Load平均要小於Cpu的數量,一般是會根據15分鍾那個load 平均值為首先。

     b、 top 來查看服務器負載

        

        Tasks行展示了目前的進程總數及所處狀態,要注意zombie,表示僵屍進程,不為0則表示有進程出現問題。 ------關注 zombie

        Cpu(s)行展示了當前CPU的狀態,us表示用戶進程占用CPU比例,sy表示內核進程占用CPU比例,id表示空閑CPU百分比,

           wa表示IO等待所占用的CPU時間的百分比。wa占用超過30%則表示IO壓力很大。         --------關注 wa

        Mem行展示了當前內存的狀態,total是總的內存大小,userd是已使用的,free是剩余的,buffers是目錄緩存。 

        Swap行同Mem行,cached表示緩存,用戶已打開的文件。如果Swap的used很高,則表示系統內存不足。      -----關注swap

        在top命令下,按1,則可以展示出服務器有多少CPU,及每個CPU的使用情況

        shift + "c" : cpu 使用率從大到小排序

        shift + "p" 內存使用率從大到小排序,結合使用很容易定位那些服務使用了較高的CPU和內存。

    c、iostat 來查看io開銷

        

        其中rsec/s表示讀入,wsec/s表示每秒寫入,這兩個參數某一個特別高的時候就表示磁盤IO有很大壓力

        util表示IO使用率,如果接近100%,說明IO滿負荷運轉。 

10、查看系統的負載情況

    $ vmstat

        

     r 列表示運行和等待cpu時間片的進程數,如果長期大於1,說明cpu不足,需要增加cpu。 

     b 列表示在等待資源的進程數,比如正在等待I/O、或者內存交換等。 cpu 表示cpu的使用狀態 

     us 列顯示了用戶方式下所花費 CPU 時間的百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程序。

     sy 列顯示了內核進程所花費的cpu時間的百分比。這里us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。

     wa 列顯示了IO等待所占用的CPU時間的百分比。這里wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,

        這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。

     id 列顯示了cpu處在空閑狀態的時間百分比 system 顯示采集間隔內發生的中斷數 

     in 列表示在某一時間間隔中觀測到的每秒設備中斷數。

     cs列表示每秒產生的上下文切換次數,如當 cs 比磁盤 I/O 和網絡信息包速率高得多,都應進行進一步調查。 

     swpd 切換到內存交換區的內存數量(k表示)。如果swpd的值不為0,或者比較大,比如超過了100m,只要si、so的值長期為0,系統性能還是正常

       free 當前的空閑頁面列表中內存數量(k表示) buff 作為buffer cache的內存數量,一般對塊設備的讀寫才需要緩沖

     cache: 作為page cache的內存數量,一般作為文件系統的cache,如果cache較大,說明用到cache的文件較多,如果此時IO中bi比較小,說明文件系統效率比較好。      si 由內存進入內存交換區數量。 so由內存交換區進入內存數量。 IO 

     bi 從塊設備讀入數據的總量(讀磁盤)(每秒kb)。 bo 塊設備寫入數據的總量(寫磁盤)(每秒kb)

       這里我們設置的bi+bo參考值為1000,如果超過1000,而且wa值較大應該考慮均衡磁盤負載,可以結合iostat輸出來分析

11、Load誤解

     a:系統load高一定是性能有問題。

       真相:Load高也許是因為在進行cpu密集型的計算

      b:系統Load高一定是CPU能力問題或數量不夠。

       真相:Load高只是代表需要運行的隊列累計過多了。但隊列中的任務實際可能是耗Cpu的,也可能是耗i/0及其他因素的。

     c:系統長期Load高,首先增加CPU

      真相:Load只是表象,不是實質。增加CPU個別情況下會臨時看到Load下降,但治標不治本。

    d:在Load average 高的情況下如何鑒別系統瓶頸。

       是CPU不足,還是io不夠快造成或是內存不足?

12、jdk自帶的有用的工具

    jsp :羅列出目前再服務器上運行的java程序及進程ID       有的時候(tomcat)不好用,所以一般使用 ps -ef|grep java 來查找

    jstat :用於輸出java程序內存使用情況,包括新生代、老年代、元數據區容量、垃圾回收的情況

       jstat -gcutil 1133 2000 2   :1133 是java的進程  2000毫秒執行一次 執行兩次

          S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 

          96.12 0.00 57.37 64.03 98.39 96.87 42 0.530 3 0.335 0.865

          96.12 0.00 57.37 64.03 98.39 96.87 42 0.530 3 0.335 0.865

          S0:幸存1區當前使用比例

          S1:幸存2區當前使用比例
          E:伊甸園區使用比例          

              O:老年代使用比例

          M:元數據區使用比例
               CCS:壓縮使用比例
          YGC:年輕代垃圾回收次數
          FGC:老年代垃圾回收次數
          FGCT:老年代垃圾回收消耗時間
          GCT:垃圾回收消耗總時間

    jmap :用於輸出java程序中內存對象的使用情況,包括那些對象,對象的數量

        jmap -histo 3618

        一般我們都進行打印數據的:jmap -dump:live,format=b,file=heap.hprof 3618

    jstack:用戶輸出java程序線程棧的情況,常用於定位因為某些線程問題造成的故障或性能問題。

        jstack 3618 > jstack.out

        上述命令將進程ID為3618的棧信息輸出到外部文件,便於傳輸到windows電腦上進行分析

        導出查看分析線程waiting 的原因

13、windows 有一個  jvisualvm.exe 軟件

    就在在JDK安裝目錄下的bin目錄下面,雙擊即可打開

  

    

            

       

  

 

 

          

      

        

 

  

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM