精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文搞定 Perf 和 Gpertools

系統 Linux
在Linux下開發是幸福的,尤其是在發生問題的時候。永遠忘不了在Windows下應用發生問題時那種無助的感覺。

[[390062]]

本文轉載自微信公眾號「小姐姐味道」,作者小姐姐養的狗。轉載本文請聯系小姐姐味道公眾號。

在Linux下開發是幸福的,尤其是在發生問題的時候。永遠忘不了在Windows下應用發生問題時那種無助的感覺。

Java提供了非常多的工具來應對故障排查、性能分析,比如jstat、jmap、jmc等。但大多數情況下,資源的瓶頸在操作系統上。如果宿主機并不能正常工作,那么在之上進行各種Java的應用分析就會變得沒有意義。皮之不存毛將焉附,就是這個道理。

要做性能分析,Linux下有一個非常好用的工具,叫做perf。幾乎每個發行版都有它的安裝包。perf誕生于2009年,是一個內核級的工具;另外,還有一個工具叫做gperftools,是google的產品,是一個應用級別的產品。

雖然它們都有perf字樣,但使用場景和處理的問題也是不一樣的。

1. perf:CPU暴漲問題排查

顧名思義,perf是做性能分析用的。perf支持兩種模式,計算模式和采樣模式。比如,perf stat使用的是計算模式,而perf record采用的是采樣模式。拿采樣來說,它的原理是這樣的:每隔一個固定的時間,產生一個中斷,然后統計對應的pid和函數。采樣就預示著與實際運行情況并不能保持一致,但如果一個函數運行的時間越長,被時鐘中斷的機會就越大。鑒于perf最終顯示的是統計值,所以它的測量結果是高度可信的。

通過包管理工具可以很容易的獲取perf。比如在centos下,直接通過yum install perf進行安裝。perf提供了非常多的命令,我們可以直接輸入perf輸出這些選項。

Perf的功能非常多,常用的有perf list、perf stat、perf top、perf record、perf report等。下面以幾個常見的例子,來說明它的應用場景。

使用下面的腳本,使得某一核CPU使用飆升到100%。

  1. cat /dev/zero > /dev/null 

使用下面腳本,耗光CPU資源。(先取得cpu的核數,然后循環生成任務)。這段腳本將數據輸出到/dev/null,所以只占用CPU資源,沒有占用任何I/O資源。

  1. for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; 
  2.  do dd if=/dev/zero of=/dev/null &  
  3. done 

我們就拿下面的這個腳本來說明情況。從top的截圖中,可以看到sy和ni的占用,達到了100%,我的腳本起作用了!(溫馨提示:執行完腳本后,如果你想要殺死這些進程,除了重啟之外,還可以直接通過ps找到相應的進程,然后使用kill命令終止)。

接下來使用record指令來錄制CPU的使用情況。從上面的描述可以得知,統計結果是采樣結果。

  1. <># perf record -a -e cycles -o perf.perf -g sleep 10 
  2.  
  3. [ perf record: Woken up 55 times to write data ] 
  4. [ perf record: Captured and wrote 14.282 MB perf.perf (160302 samples) ] 

程序將會運行10秒鐘,然后將采樣結果輸出到perf.perf文件中。通過report命令可以展示統計結果。

  1. perf report -i perf.perf  

可以看到大多數cpu的損耗都是在dd命令上,甚至里面的調用樹,也能夠清晰的展示。這在調試一些c++語言寫的程序,或者調試jvm的一些內部行為時,非常的有用,因為它可以直接跟蹤到系統調用層面。但有些細節,如果對Linux內核不是非常了解的話,下手就比較困難。所以通常情況下,我們只能通常粗略的定位到有問題的模塊,然后再深入進行調試。

perf還可以通過指定進程號進行性能追蹤,來獲取性能數據。

  1. perf top -g -p 2343 

2. 示例代碼

了解到perf的基本用法,我們拿一個經常實際遇到的例子來說明一下perf的使用。堆外內存是通過JNI等類庫進行調用所產生的內存,在實際排查中定位非常困難。傳統的工具包括JMC,都不能快速有效的找到問題的元兇。黔驢技窮的時候,一般就到了perf上場的時候了。

為了演示這個過程,我特意做了一段非常精致的JAVA代碼。代碼片段較長,可以訪問下面的gist鏈接,下面只說明關鍵代碼。這段代碼是典型的堆外內存泄露問題。

  1. https://gist.github.com/lycying/70ff3897d8516011c7ffc702aa0d03c2 

使用com.sun.net.httpserver.HttpServer自帶的簡易server,可以非常容的構造一個服務器,我們可以通過請求去改變一些應用行為。

使用下面的JVM參數啟動這段代碼。

  1. java -Xmx1G -Xmn1G \ 
  2.  -XX:+AlwaysPreTouch  \ 
  3.  -XX:MaxMetaspaceSize=10M \ 
  4.  -XX:MaxDirectMemorySize=10M \ 
  5.  -XX:NativeMemoryTracking=detail LeakExample 

程序將人為創建一個停頓狀態,具體測試步驟如下。

  1. 程序運行一小段時間,內存使用率迅速達到60%時,這時候程序將自動掛起
  2. 啟動perf進行采樣,相當于問題發生中進行切入 (perf record -g -p $pid)
  3. 訪問http://localhost:8888 端口,將會將內存閾值提高到85%,內存會迅速達到這個狀態
  4. 停止采樣,將生成perf數據
  5. 使用perf report進行分析 (perf report -i perf.data )

這將會得到下面的一張圖。

但我們不能從中得到有用的信息。是方法錯了么?是的。采樣內存,要使用perf mem record指令,但是這個指令在大多數機器上都不能工作,得到的信息也有限。

perf記錄的是CPU的性能數據,這里要特別說明一下。只要是使用率上5%的,我一般都會關注。一般情況下,占用的cpu時間片多,證明使用內存也比較多。但事情總有例外的時候,比如頻繁申請1byte的方法塊,和一次性申請1MB的方法塊,并不能同日而語。

所以perf能不能發現內存問題,要看運氣。

3. gperftools:找到堆外內存的元兇

要找到內存問題,要使用google的gperftools,我們主要用到它的 Heap Profiler,功能很強大。https://github.com/gperftools/gperftools

它的啟動方式有點特別,安裝成功之后,你只需要輸出兩個環境變量即可。

  1. mkdir -p /opt/test  
  2. export LD_PRELOAD=/usr/lib64/libtcmalloc.so  
  3. export HEAPPROFILE=/opt/test/heap 

在同一個終端,再次啟動我們的應用程序,可以看到內存申請動作都被記錄到了 opt 目錄下的 test 目錄。

接下來,我們就可以使用 pprof 命令分析這些文件。

  1. cd /opt/test 
  2. pprof -text *heap  | head -n 200 

使用這個工具,能夠一眼追蹤到申請內存最多的函數。Java_java_util_zip_Inflater_init 這個函數立馬就被發現了。

這就是我們模擬內存泄漏的整個過程,到此問題就解決了。

GZIPInputStream 使用 Inflater 申請堆外內存、Deflater 釋放內存,調用 close() 方法來主動釋放。如果忘記關閉,Inflater 對象的生命會延續到下一次 GC,有一點類似堆內的弱引用。在此過程中,堆外內存會一直增長。

問題發生在我們的decompress函數上。它在使用的時候,忘記關閉流了。我們可以看一下異常和正常情況的區別。

這段是忘了關閉流的函數。這種情況在編碼中經常會發生。

  1. public static String decompress(byte[] input) throws Exception { 
  2.         ByteArrayOutputStream out = new ByteArrayOutputStream(); 
  3.         copy(new GZIPInputStream(new ByteArrayInputStream(input)), out); 
  4.         return new String(out.toByteArray()); 
  5.     } 

下面是修改后正常的函數。

  1. public static String decompress(byte[] input) throws Exception { 
  2.         ByteArrayOutputStream out = new ByteArrayOutputStream(); 
  3.         GZIPInputStream gzip = new GZIPInputStream(new ByteArrayInputStream(input)); 
  4.         try { 
  5.             copy(gzip, out); 
  6.             return new String(out.toByteArray()); 
  7.         }finally { 
  8.             try{ gzip.close(); }catch (Exception ex){} 
  9.             try{ out.close(); }catch (Exception ex){} 
  10.         } 
  11.     } 

4. 題外話

使用pprof,還可以輸出圖形化的分析報告,需要安裝圖形生成工具graphviz,可以說是非常nice了。

另外不得不提的一點是,perf和gperftools對性能的影響,雖然不是特別大,但也盡量不要在線上環境使用它們。據我實際使用的經驗判斷,這個性能損耗率大概在30%左右。如果你的問題可以復現,通過常規手法又無法解決的情況下,可以使用這些工具去分析。比如你的應用實例有5個,完全可以分20%的流量到專用的機器上,把profile打開,相信你會很快定位到問題。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2024-01-09 08:24:47

JMM核心線程

2021-08-13 05:50:01

ContainerdDockerKubernetes

2021-10-25 16:01:01

Linux設備樹字符串

2019-09-23 10:51:14

JavaJava虛擬機Linux

2022-08-17 18:25:37

Java分布式搜索引擎

2025-08-08 01:11:00

React組件通信

2021-08-31 07:02:20

Diff算法DOM

2021-10-06 20:23:08

Linux共享內存

2020-10-29 08:55:04

微服務

2020-03-03 17:47:07

UDP TCP面試題

2022-04-15 08:03:41

SaaS應用管理市場

2021-04-19 17:32:34

Java內存模型

2021-08-31 07:02:34

數據響應Vue偵測數據變化

2021-04-02 06:17:10

大數加減乘除數據結構算法

2025-04-07 08:20:00

ORMPython代碼

2021-08-31 06:37:35

Java 語言 Java 基礎

2023-08-01 08:27:15

Java I/ONIO

2020-11-30 12:32:40

PyTorch語義分割python

2025-09-02 09:02:30

LinuxWindows雙系統

2023-10-30 18:08:50

點贊
收藏

51CTO技術棧公眾號

日韩手机在线观看视频| www.一区二区| 亚洲图片欧美一区| 国产一区二区三区久久精品 | 北条麻妃一区二区三区在线| 久久老女人爱爱| 97精品国产97久久久久久免费| 天天干天天玩天天操| 欧美捆绑视频| 精品一区二区三区四区五区 | 91在线中字| 美女国产一区二区三区| 亚洲色图美腿丝袜| 北条麻妃69av| 婷婷丁香花五月天| 亚洲精品资源| 亚洲变态欧美另类捆绑| 日韩一区二区高清视频| 精品人妻伦一二三区久久 | 不卡大黄网站免费看| 欧美成在线观看| 在线播放av中文字幕| 午夜视频在线看| 日韩不卡在线观看日韩不卡视频| 日韩av中文字幕在线免费观看| 男女爱爱视频网站| 国产一区二区波多野结衣 | 免费看污污视频| 免费人成黄页在线观看忧物| 国产老肥熟一区二区三区| 日韩视频免费在线| 国产成人强伦免费视频网站| av在线看片| 成人黄页在线观看| 91精品综合视频| 欧美被狂躁喷白浆精品| 波多野结衣在线一区二区 | 久久人人爽国产| 折磨小男生性器羞耻的故事| 黄色美女视频在线观看| 99久久免费精品| 18成人免费观看网站下载| 久久久久久久久久99| 精品av导航| 在线视频亚洲一区| 影音欧美亚洲| 亚洲国产成人一区二区| 一级成人国产| 中文字幕日韩欧美在线| 欧美日韩久久婷婷| 91破解版在线观看| 国产欧美精品一区二区三区四区| 国产视频福利一区| 久久免费小视频| 欧美一区激情| 亚洲毛片在线观看.| 色综合色综合色综合色综合| 偷拍视频一区二区三区| 一区精品在线播放| 国产福利一区二区三区在线观看| 日本中文字幕第一页| 亚洲综合色站| 亚洲欧美激情视频| 成人影视免费观看| 国产精品亚洲四区在线观看| 欧美日韩国产精品一区| 亚洲日本japanese丝袜| a级片免费观看| 玖玖精品视频| 久久久女人电视剧免费播放下载| 久久久久久国产精品视频| 影音先锋亚洲一区| 久久精品99久久久香蕉| 熟女丰满老熟女熟妇| 亚洲ww精品| 日本高清无吗v一区| 日韩久久久久久久久久久久| 黄色小说在线播放| 欧美午夜片欧美片在线观看| 欧洲xxxxx| 调教一区二区| 中文一区在线播放| 久久精品国产精品国产精品污| 国产精品欧美综合亚洲| 天堂精品中文字幕在线| 国产精品久久久久久影视| 亚洲免费激情视频| 欧美三区美女| 久久亚洲电影天堂| 五月天免费网站| 亚洲视频分类| 亚洲成人精品视频在线观看| theporn国产精品| 91精品国产乱码久久久竹菊| 8v天堂国产在线一区二区| 粗暴91大变态调教| 国产精品毛片无码| 亚洲精品成人免费| 国产精品一区二区人妻喷水| 蜜桃在线一区| 亚洲乱亚洲乱妇无码| 91人妻一区二区三区蜜臀| 97精品国产福利一区二区三区| 亚洲欧美在线播放| 国产中文av在线| 91影院成人| 国语自产在线不卡| 一区二区三区精| 91在线视频在线| 久久国产精品久久精品国产| 久操视频在线免费播放| 成人欧美一区二区三区1314| www国产精品内射老熟女| h片在线观看视频免费免费| 欧美在线制服丝袜| 中国av免费看| 美女少妇全过程你懂的久久| 亚洲免费视频一区二区| 欧美三级黄色大片| 日韩中文字幕亚洲一区二区va在线| 亚洲影视中文字幕| 国产丝袜视频在线观看| 国产精品一区二区久久不卡 | 精品国产乱码久久久久久果冻传媒| 日韩电影免费观看中文字幕| 91视频综合网| 欧美视频二区| 91精品视频在线免费观看| 久久精品a一级国产免视看成人| 久久精品这里都是精品| 亚洲精品成人自拍| 毛片在线不卡| 亚洲一区精品在线| 久国产精品视频| 国产乱码精品一区二区三区四区| 自拍偷拍亚洲欧美| 丰满少妇xoxoxo视频| 成人毛片视频在线观看| 欧美一区二区三区成人久久片| 日韩偷拍自拍| 欧美激情中文字幕| 成人午夜视频免费在线观看| 开心激情综合| 久久久久久久久久久免费| 亚洲欧美精品一区二区三区| 秋霞电影一区二区| 91观看网站| 成人在线影视| 欧美一区二区三区在线电影| av黄色一级片| 欧美日韩日本国产亚洲在线| 亚洲一区二区三区香蕉| 中文国产字幕在线观看| 日韩手机在线导航| 超碰97人人干| 免费日韩av片| 91久久精品一区二区别| 大地资源网3页在线观看| 日韩午夜在线观看视频| 久久久久久久国产视频| aa级大片欧美| 成年人免费在线播放| 二区三区精品| 欧美国产乱视频| 凹凸精品一区二区三区| 成人午夜碰碰视频| 国产欧美日韩网站| 亚洲一区二区av| 精品视频在线播放色网色视频| 日本成人精品视频| 青草av.久久免费一区| 亚洲精品一区二区三区四区五区| 亚洲伊人伊成久久人综合网| 九九九久久久久久| 色婷婷久久综合中文久久蜜桃av| 成人晚上爱看视频| 浮妇高潮喷白浆视频| 国产在线观看91一区二区三区| 国产乱肥老妇国产一区二| 日本中文字幕一区二区有码在线| 色一区在线观看| 污污内射在线观看一区二区少妇| 亚洲专区免费| 在线丝袜欧美日韩制服| 99精品国产一区二区三区2021| 38少妇精品导航| 丰满人妻av一区二区三区| 国产精品美女久久福利网站| 干日本少妇首页| 成人短片线上看| 国产成人福利视频| 欧美成熟毛茸茸| 欧美日本精品一区二区三区| 精品人妻中文无码av在线| 国产日韩欧美三级| 国产伦精品一区二区三区照片 | 久久精品视频网站| 人妻一区二区三区免费| 亚洲欧美激情小说另类| 91小视频网站| 日韩av大片| 国产精品亚洲第一区| 日本h片在线观看| 日韩欧美视频一区| 欧美日韩中文字幕在线观看| 久久这里只有精品首页| 超碰在线免费av| 久久国产精品亚洲77777| 久久综合九色综合网站| 亚洲美女尤物影院| 日韩精品在线观看一区| 97caocao| 色老汉一区二区三区| 久久久久久福利| 亚洲视频免费观看| 日本特黄在线观看| 天堂va蜜桃一区二区三区漫画版| 蜜桃网站在线观看| 成人性生交大片免费看中文视频| 国产精品日韩av| 三妻四妾完整版在线观看电视剧| 亚洲美女av黄| 黄色一级大片在线免费看国产一| 欧美日韩一区国产| 欧美激情图片小说| 日本一区二区视频在线观看| 成人手机在线免费视频| 成人激情视频网站| 国产无套精品一区二区三区| 亚洲经典三级| 国产免费裸体视频| 欧美在线亚洲| 好色先生视频污| 国产电影一区二区在线观看| 99超碰麻豆| av资源中文在线| 久久久这里只有精品视频| 成年人网站在线| 久久亚洲精品成人| 搞黄网站在线观看| 欧美床上激情在线观看| 超碰最新在线| 欧美人在线视频| 91cn在线观看| 欧美黑人国产人伦爽爽爽| 污污片在线免费视频| 欧美黄色免费网站| 男女视频在线| 国内精品中文字幕| brazzers在线观看| 91国内在线视频| 日本在线看片免费人成视1000| 亚洲人成电影网站色www| 嫩草研究院在线观看| 亚洲欧美激情视频| av在线电影网| 亚洲国产精品va在线看黑人动漫| 午夜免费福利视频| 亚洲成人黄色在线| 男生女生差差差的视频在线观看| 亚洲精品一区二区三区不| 国产尤物视频在线| 日韩在线观看高清| yellow91字幕网在线| 久久久久久久久久久免费| 亚洲精品一区| 国产精品亚洲аv天堂网| 先锋影音一区二区| 国产精品免费区二区三区观看| 美女呻吟一区| 亚洲国产一区二区三区在线| 99九九热只有国产精品| 国产爆乳无码一区二区麻豆| aa国产精品| 亚洲精品一二三四五区| 亚洲神马久久| www.激情小说.com| 国产精品91xxx| 在线黄色免费看| 蜜芽一区二区三区| 国语对白做受xxxxx在线中国| 丝袜美腿一区二区三区| 久久久久久久久久毛片| 大美女一区二区三区| 国产aⅴ激情无码久久久无码| 成人国产电影网| www色com| 一区二区三区精品在线| 欧美a级片免费看| 亚洲中国最大av网站| 中文字幕在线欧美| 欧美一卡2卡3卡4卡| 天堂av在线7| 亚洲成人久久久| xxxxx日韩| 久久久欧美精品| 欧美xxxx性| 国产日本欧美一区| 精品在线网站观看| 永久久久久久| 香蕉久久夜色精品国产| www.偷拍.com| 欧美国产视频在线| 日韩特黄一级片| 91精品在线观看入口| 欧美日韩激情视频一区二区三区| 欧美成人精品激情在线观看| 韩国美女久久| 国产精品福利小视频| 亚洲综合在线电影| 国产精品美女免费看| 综合视频一区| 伊人色综合久久天天五月婷| 免费日韩一区二区| 国产女人18毛片水真多18 | 成年人网站免费在线观看| 亚洲蜜臀av乱码久久精品| 黄色av一区二区| 亚洲精品国产精品国自产在线 | 亚洲 欧美 另类人妖| 91在线丨porny丨国产| 国产真实乱人偷精品视频| 亚洲国产精品久久久久婷婷884| 国产亚洲精品久久久久久无几年桃 | 中文字幕日韩av综合精品| 婷婷电影在线观看| 精品国产乱码久久久久| 制服丝袜日韩| 亚洲一区二区三区av无码| 性xx色xx综合久久久xx| www.17c.com喷水少妇| 亚洲在线视频网站| 精品久久久久中文慕人妻| 另类色图亚洲色图| 亚洲精品成人一区| 亚洲视频在线观看日本a| 日本特黄久久久高潮| 男人舔女人下部高潮全视频| 色综合久久六月婷婷中文字幕| 深爱五月激情五月| 国内自拍欧美激情| 日韩av影院| 亚洲一区二区在线看| 日韩vs国产vs欧美| av电影在线不卡| 在线国产亚洲欧美| 九色在线观看| 国产精品video| av在线不卡顿| www.这里只有精品| 国产精品久久久久久久久果冻传媒| 欧美成人aaa片一区国产精品| 日韩一区二区影院| 污污影院在线观看| 国产精品裸体一区二区三区| 国内久久精品| 成人亚洲精品777777大片| 日本一区二区三区dvd视频在线| 日韩精品一区不卡| 精品对白一区国产伦| av在线网页| 麻豆av一区| 另类调教123区| 亚洲av无码一区二区三区在线| 日韩欧美亚洲国产精品字幕久久久| 成人影音在线| 欧美三日本三级少妇三99| 欧美va亚洲va日韩∨a综合色| 日日夜夜精品视频免费观看| 亚洲一级不卡视频| 精品视频二区| 91精品国产综合久久久久久久久 | 精品国产www| 久久精品99国产精品酒店日本| 日韩欧美激情电影| 亚洲国产精品一区在线观看不卡 | 国产精品久久久乱弄| 少妇熟女视频一区二区三区 | 欧美巨乳美女视频| 色天下一区二区三区| 日本wwwcom| 国产亚洲精品7777| 久久久久亚洲av成人毛片韩| 亚洲图片欧洲图片av| 96视频在线观看欧美| 日韩视频免费播放| 亚洲国产精品黑人久久久| 国产福利小视频| 青青在线视频一区二区三区| av综合网址| 天天影视综合色| 一级特黄大欧美久久久| 免费毛片在线| 成人免费淫片视频软件| 日韩av密桃| 午夜不卡久久精品无码免费| 欧美三区免费完整视频在线观看| 在线黄色网页| 日韩精品无码一区二区三区| 性一交一乱一区二区洋洋av|