python集成chaosblade工具用于混沌測試

背景

阿里開源的chaosblade混沌測試工具:從cpu、磁盤、內存、網絡等硬因素,jvm、process、servlet等軟因素,從物理機、docker容器、k8s集群等維度統一規范地維護了一套命令用于單節點、分布式集群的應用、中間件、數據庫的故障注入,以檢測目標系統的穩定性、可靠性、容錯性、數據一致性等方面問題

實現原理

還是對最底層的linux命令進行封裝,如tc、iptables、dd等,本工具是基于blade create? 命令進行使用,支持本地運行或者通過ssh進行遠程機器上的運行, 方便進行基于blade開源出來的命令進行自動化測試

├── blade_cpu.py

├── blade_disk.py

├── blade_docker.py

├── blade_jvm.py

├── blade_mem.py

├── blade_net.py

├── blade_process.py

├── blade_servlet.py

├── blade_utils.py

├── configure_utils.py

├── log_utils.py

└── shell_utils.py

核心腳本已經開源至:https://gitee.com/helloworldct/chaosblade-python


備注 java進程相關的排查工具:

# jinfo

可以輸出并修改運行時的java進程的opts

* 用法:jinfo -opt pid

如:查看2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 2788。

# jps

與ps類似,用來顯示本地的java進程,可以查看本地運行著幾個java程序,并顯示他們的進程號。

# jstat

一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。

詳細:在使用這些工具前,先用JPS命令獲取當前的每個JVM進程號,然后選擇要查看的JVM。

jstat工具特別強大,有眾多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id,和所選參數。以下詳細介紹各個參數的意義。

* jstat -class pid:顯示加載class的數量,及所占空間等信息。

* jstat -compiler pid:顯示VM實時編譯的數量等信息。

* jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時間。其中最后五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。

* jstat -gccapacity:可以顯示,VM內存中三代(young,old,perm)對象的使用和占用大小,如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存占用量,PC是但前perm內存占用量。其他的可以根據這個類推, OC是old內純的占用量。

* jstat -gcnew pid:new對象的信息。

* jstat -gcnewcapacity pid:new對象的信息及其占用量。

* jstat -gcold pid:old對象的信息。

* jstat -gcoldcapacity pid:old對象的信息及其占用量。

* jstat -gcpermcapacity pid: perm對象的信息及其占用量。

* jstat -util pid:統計gc信息統計。

* jstat -printcompilation pid:當前VM執行的信息。

* jstat -gcutil? pid? 1000 100? : 1000ms統計一次gc情況統計100次;

除了以上一個參數外,還可以同時加上 兩個數字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,還可以加上-h3每三行顯示一下標題。

# jmap

打印出某個java進程(使用pid)內存內的所有‘對象‘的情況(如:產生那些對象,及其數量)。

jmap是一個可以輸出所有內存中對象的工具,甚至可以將VM中的heap,以二進制輸出成文本。

命令:jmap -dump:format=b,file=heap.bin

* file:保存路徑及文件名

* pid:進程編號

* jmap -histo:live? pid| less :堆中活動的對象以及大小

* jmap -heap pid :查看堆的使用狀況信息

# jconsole

一個java GUI監視工具,可以以圖表化的形式顯示各種數據。并可通過遠程連接監視遠程的服務器VM。

JConsole中關于內存分區的說明:

* Eden Space (heap): 內存最初從這個線程池分配給大部分對象。

* Survivor Space (heap):用于保存在eden space內存池中經過垃圾回收后沒有被回收的對象。

* Tenured Generation (heap):用于保持已經在 survivor space內存池中存在了一段時間的對象。

* Permanent Generation (non-heap):保存虛擬機自己的靜態(refective)數據,例如類(class)和方法(method)對象。Java虛擬機共享這些類數據。這個區域被分割為只讀的和只寫的,

* Code Cache (non-heap):HotSpot Java虛擬機包括一個用于編譯和保存本地代碼(native code)的內存,叫做“代碼緩存區”(code cache)

# jstack

查看jvm線程運行狀態,是否有死鎖現象等等信息

* 用法: jstack pid : thread dump

# jcmd

[參考鏈接](https://juejin.cn/post/6844903809932591112)

* 使用jcmd的Compiler.codecache也可以查看code cache的使用情況,輸出跟-XX:+PrintCodeCache相同

用法:jcmd pid Compiler.codecache

* 使用jcmd的VM.native_memory也可以查看code cache的使用情況(Code部分),Compiler部分為Memory tracking used by the compiler when generating code

用法:jcmd pid VM.native_memory:

另外推薦一款查看jmap dump的內存對象工具 MemoryAnalyzer

工程參考鏈接:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-create-jvm/blade-create-jvm-return

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容