• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 性能分析系列-小命令保證大性能(3)

    發表于:2016-11-28來源:簡書作者:小程故事多點擊數: 標簽:性能分析
    Thread( new PidstatTask()).start(); new Thread( new LazyTask()).start(); new Thread( new LazyTask()).start(); }} 注: 這是一段測試用的java程序,將其運行起來。 在命令行輸入:
    Thread(new PidstatTask()).start(); new Thread(new LazyTask()).start(); new Thread(new LazyTask()).start(); } }

    注:這是一段測試用的java程序,將其運行起來。

    在命令行輸入:

    pidstat -p 843 1 3 -u -t
    /* 
    -u:代表對cpu使用率的監控
    參數1 3:表示每秒采樣一次,一共三次
    -t:將監控級別細化到線程 
    */

    運行命令顯示如下圖所示:


    Paste_Image.png


    注:其實中TID就是線程ID,%usr表示用戶線程使用率,從圖中可以看到855這個線程占用cpu非常的高。

    再輸入如下命令:

    jstack -l 843 > /tmp/testlog.txt

    查看testlog.txt顯示如下部分內容:


    Paste_Image.png


    注:我們關注的是日志文件的NID這個字段,它對應的就是我們上面說的TID,NID是TID的16進制表示,將上面的十進制855轉換成十六進制為357,在日志中進行搜索看到如下內容:

    "Thread-0" prio=10 tid=0x00007f7d90103800 nid=0x357 runnable [0x00007f7d943d5000]
       java.lang.Thread.State: RUNNABLE
        at PidstatTest$PidstatTask.run(PidstatTest.java:13)
        at java.lang.Thread.run(Thread.java:722)
    
       Locked ownable synchronizers:
        - None

    以此可以推斷出有性能瓶頸的程序點。

    2、pidstat具體命令詳解
    pidstat是一個功能非常強大的性能監測工具,他是Sysstat的組件之一,可以從http://sebastien.godard.pagesperso-orange.fr/download.html 進行下載,下載后可以通過./configure等命令進行安裝,這個命令的強大之處在于不僅可以監控進程的性能情況,也可以監控線程的性能情況。

    pidstat監控cpu常用顯示字段內容如下:

    1、PID - 被監控的任務的進程號
    2、%usr - 當在用戶層執行(應用程序)時這個任務的cpu使用率,和 nice 優先級無關。注意這個字段計算的cpu時間不包括在虛擬處理器中花去的時間。
    3、%system - 這個任務在系統層使用時的cpu使用率。
    4、%guest - 任務花費在虛擬機上的cpu使用率(運行在虛擬處理器)。
    5、%CPU - 任務總的cpu使用率。在SMP環境(多處理器)中,如果在命令行中輸入-I參數的話,cpu使用率會除以你的cpu數量。
    6、CPU - 正在運行這個任務的處理器編號。
    7、Command - 這個任務的命令名稱。

    pidstat監控io常用的字段顯示內容如下:

    1、kB_rd/s - 任務從硬盤上的讀取速度(kb)
    2、kB_wr/s - 任務向硬盤中的寫入速度(kb)
    3、kB_ccwr/s - 任務寫入磁盤被取消的速率(kb)

    三、一個內存溢出案例分析

    1、內存溢出現象
    系統共有8臺服務器,每次隨機只有一臺服務器java.lang.OutOfMemoryError: GC overhead limit exceeded錯誤,然后接著就報內存溢出錯誤java.lang.OutOfMemoryError: Java heap space。

    2、理論支撐

    原文轉自:http://www.jianshu.com/p/6df2963fe94e

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>