JVM(5)分析工具

給系統(tǒng)定位問題的時(shí)候州邢,知識儡陨、經(jīng)驗(yàn)是關(guān)鍵基礎(chǔ),數(shù)據(jù)是依據(jù)量淌,工具是運(yùn)用知識處理數(shù)據(jù)的手段骗村。這里說的數(shù)據(jù)包括:cpu、網(wǎng)絡(luò)呀枢、內(nèi)存胚股、磁盤、運(yùn)行日志裙秋、異常堆棧琅拌、 GC 日志、線程快照 ( threaddump/javacore 文件)摘刑、堆轉(zhuǎn)儲快照( heapdump/hprof 文件)等进宝。經(jīng)常使用適當(dāng)?shù)奶摂M機(jī)監(jiān)控和分析的工具可以加快我們分析數(shù)據(jù)、定位解決問題的速度泣侮。

1即彪、系統(tǒng)工具

1.1紧唱、top

top命令用于顯示所有運(yùn)行和活躍的實(shí)時(shí)進(jìn)程并定期更新它活尊。它顯示了cpu使用率,內(nèi)存使用率漏益,交換內(nèi)存蛹锰,緩存大小,緩沖區(qū)大小绰疤,進(jìn)程pid铜犬,用戶,命令等等。它也展示了運(yùn)行進(jìn)程的高cpu利用率和內(nèi)存利用率癣猾。top命令對系統(tǒng)管理員監(jiān)視和在需要的時(shí)候采取正確的行動是非常的重要敛劝。

top命令使用方法:

格式:top [-] [d] [p] [q] [c] [C] [S] [s] [n]

參數(shù)說明:

  • d:指定每兩次屏幕信息刷新之間的時(shí)間間隔。當(dāng)然用戶可以使用s交互命令來改變之纷宇。
  • p:通過指定監(jiān)控進(jìn)程ID來僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài)夸盟。
  • q:該選項(xiàng)將使top沒有任何延遲的進(jìn)行刷新。如果調(diào)用程序有超級用戶權(quán)限像捶,那么top將以盡可能高的優(yōu)先級運(yùn)行上陕。
  • S:指定累計(jì)模式。
  • s:使top命令在安全模式中運(yùn)行拓春。這將去除交互命令所帶來的潛在危險(xiǎn)释簿。
  • i:使top不顯示任何閑置或者僵死進(jìn)程。
  • c:顯示整個(gè)命令行而不只是顯示命令名硼莽。

top的內(nèi)部命令:

  • s – 改變畫面更新頻率

  • l – 關(guān)閉或開啟第一部分第一行 top 信息的表示

  • t – 關(guān)閉或開啟第一部分第二行 Tasks 和第三行 Cpus 信息的表示

  • m – 關(guān)閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息的表示

  • N – 以 PID 的大小的順序排列表示進(jìn)程列表

  • P – 以 CPU 占用率大小的順序排列進(jìn)程列表

  • M – 以內(nèi)存占用率大小的順序排列進(jìn)程列表

  • h – 顯示幫助

  • n – 設(shè)置在進(jìn)程列表所顯示進(jìn)程的數(shù)量

  • q – 退出 top

  • s – 改變畫面更新周期

示例1:

top1.png

https://www.cnblogs.com/sunshuhai/p/6250514.html
https://www.cnblogs.com/zk47/p/4261288.html
https://www.cnblogs.com/zhoug2020/p/6336453.html

1.2庶溶、htop

htop 是Linux系統(tǒng)中的一個(gè)互動的進(jìn)程查看器,一個(gè)文本模式的應(yīng)用程序(在控制臺或者X終端中)沉删,需要ncurses渐尿。與Linux傳統(tǒng)的top相比,htop更加人性化矾瑰。它可讓用戶交互式操作砖茸,支持顏色主題,可橫向或縱向滾動瀏覽進(jìn)程列表殴穴,并支持鼠標(biāo)操作凉夯。

htop相比較top的優(yōu)勢:

  • 可以橫向或縱向滾動瀏覽進(jìn)程列表,以便看到所有的進(jìn)程和完整的命令行采幌。

  • 在啟動上比top 更快劲够。

  • 殺進(jìn)程時(shí)不需要輸入進(jìn)程號。

  • htop 支持鼠標(biāo)選中操作(反應(yīng)不太快)休傍。

  • top 已不再維護(hù)征绎。

示例1:

示例2:

https://www.cnblogs.com/zangfans/p/8595000.html
https://blog.csdn.net/u011327981/article/details/78201208
https://www.sogou.com/link?url=hedJjaC291NVm6BbIVBZ6EkewZMrPH_RI_FFzAicPRHyNSHDNjHtute0NqN3DoLN0ztd7q5nl6o.

1.2、vmstat

vmstat 統(tǒng)計(jì)虛擬內(nèi)存信息磨取,可以對操作系統(tǒng)的proc人柿、memory、CPU忙厌、IO等信息進(jìn)行統(tǒng)計(jì)以呈現(xiàn)給用戶凫岖。

vmstat語法:

  • vmstat [-a] [-n] [delay [ count]]
  • vmstat [-f] [-s] [-m]
  • vmstat [-S unit]
  • vmstat [-d]
  • vmstat [-p disk_partition]
  • vmstat [-V]

參數(shù)說明:

  • [ -a ] 顯示 活動(active)和 非活動(inactive)的內(nèi)存。
  • [ -n ] 只顯示頭信息逢净,不周期性顯示哥放。這里沒有測試出-n的作用歼指,貌似有和沒有,結(jié)果都一樣甥雕。
  • [ -f ] 顯示自開機(jī)以來forks的總數(shù)踩身,包括fork、vfork和clone system calls社露,總數(shù)和tasks創(chuàng)建的數(shù)量是一致的惰赋。
  • [ -s ]顯示各種事件計(jì)數(shù)器表和內(nèi)存統(tǒng)計(jì)信息,這顯示不重復(fù)呵哨。
  • [ -m ]顯示slabinfo赁濒,好像是緩存相關(guān)的,對這個(gè)完全不懂孟害【苎祝可以對比一下/proc/slabinfo的內(nèi)容。
  • [ -V ]顯示版本信息挨务。
  • [ -d ]顯示磁盤數(shù)據(jù)(disk statistics)
  • [ -D ]顯示磁盤統(tǒng)計(jì)表(disk table)
  • [ -S 單位 ]

k:1000

K:1024 (默認(rèn)為K)

m:1000000

M:1048576

比較:k和K

  • [ -p 分區(qū) ]顯示磁盤分區(qū)數(shù)據(jù)(disk partition statistics )
  • [ delay [ count ] ] delay是間隔击你,count顯示多少次信息』驯可以和上面的某些參數(shù)結(jié)合使用丁侄。

示例1:

vmstat1.png

示例2:

vmstat2.png

https://www.cnblogs.com/chenwenbiao/archive/2011/10/26/2224733.html
https://blog.csdn.net/frankarmstrong/article/details/54313727
http://blog.chinaunix.net/uid-25505925-id-191966.html
https://www.cnblogs.com/tommyli/p/3746187.html

1.3、tcpdump

tcpdump是一個(gè)用于截取網(wǎng)絡(luò)分組朝巫,并輸出分組內(nèi)容的工具鸿摇。tcpdump憑借強(qiáng)大的功能和靈活的截取策略,使其成為類UNIX系統(tǒng)下用于網(wǎng)絡(luò)分析和問題排查的首選工具劈猿。 tcpdump提供了源代碼拙吉,公開了接口,因此具備很強(qiáng)的可擴(kuò)展性揪荣,對于網(wǎng)絡(luò)維護(hù)和入侵者都是非常有用的工具筷黔。tcpdump存在于基本的Linux系統(tǒng)中,由于它需要將網(wǎng)絡(luò)界面設(shè)置為混雜模式仗颈,普通用戶不能正常執(zhí)行佛舱,但具備root權(quán)限的用戶可以直接執(zhí)行它來獲取網(wǎng)絡(luò)上的信息。因此系統(tǒng)中存在網(wǎng)絡(luò)分析工具主要不是對本機(jī)安全的威脅挨决,而是對網(wǎng)絡(luò)上的其他計(jì)算機(jī)的安全存在威脅请祖。

https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
https://www.sogou.com/link?url=DOb0bgH2eKh1ibpaMGjuy4yKaqZiSHtWC8ug8Cuw59om3Pojx-sH_OBXJDiYuRkTiYSK4ioE2I4.
https://www.cnblogs.com/maifengqiang/p/3863168.html
https://www.runoob.com/linux/linux-comm-tcpdump.html

1.4、netstat

Netstat是控制臺命令,是一個(gè)監(jiān)控TCP/IP網(wǎng)絡(luò)的非常有用的工具凰棉,它可以顯示路由表损拢、實(shí)際的網(wǎng)絡(luò)連接以及每一個(gè)網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息陌粹。Netstat用于顯示與IP撒犀、TCP、UDP和ICMP協(xié)議相關(guān)的統(tǒng)計(jì)數(shù)據(jù),一般用于檢驗(yàn)本機(jī)各端口的網(wǎng)絡(luò)連接情況或舞。

netstat常見參數(shù):

  • -a (all) 顯示所有選項(xiàng)荆姆,默認(rèn)不顯示LISTEN相關(guān)。
  • -t (tcp) 僅顯示tcp相關(guān)選項(xiàng)映凳。
  • -u (udp) 僅顯示udp相關(guān)選項(xiàng)胆筒。
  • -n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字诈豌。
  • -l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)仆救。
  • -p 顯示建立相關(guān)鏈接的程序名
  • -r 顯示路由信息,路由表
  • -e 顯示擴(kuò)展信息矫渔,例如uid等
  • -s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì)
  • -c 每隔一個(gè)固定時(shí)間彤蔽,執(zhí)行該netstat命令。

LISTEN和LISTENING的狀態(tài)只有用-a或者-l才能看到庙洼。

netstat網(wǎng)絡(luò)狀態(tài)詳解:

一個(gè)正常的TCP連接顿痪,都會有三個(gè)階段:1、TCP三次握手;2油够、數(shù)據(jù)傳送;3蚁袭、TCP四次揮手。


tcp.png
  • SYN:(同步序列編號,Synchronize Sequence Numbers)該標(biāo)志僅在三次握手建立TCP連接時(shí)有效石咬。表示一個(gè)新的TCP連接請求揩悄。
  • ACK:(確認(rèn)編號,Acknowledgement Number)是對TCP請求的確認(rèn)標(biāo)志,同時(shí)提示對端系統(tǒng)已經(jīng)成功接收所有數(shù)據(jù)。
  • FIN:(結(jié)束標(biāo)志,FINish)用來結(jié)束一個(gè)TCP回話.但對應(yīng)端口仍處于開放狀態(tài),準(zhǔn)備接收后續(xù)數(shù)據(jù)鬼悠。
  • LISTEN:首先服務(wù)端需要打開一個(gè)socket進(jìn)行監(jiān)聽虏束,狀態(tài)為LISTEN, The socket is listening for incoming connections. 偵聽來自遠(yuǎn)方TCP端口的連接請求 厦章。
  • SYN_SENT:客戶端通過應(yīng)用程序調(diào)用connect進(jìn)行active open.于是客戶端tcp發(fā)送一個(gè)SYN以請求建立一個(gè)連接镇匀,之后狀態(tài)置為SYN_SENT,The socket is actively attempting to establish a connection. 在發(fā)送連接請求后等待匹配的連接請求袜啃。
  • SYN_RECV:服務(wù)端應(yīng)發(fā)出ACK確認(rèn)客戶端的SYN汗侵,同時(shí)自己向客戶端發(fā)送一個(gè)SYN, 之后狀態(tài)置為SYN_RECV 群发,
  • A connection request has been received from the network. 在收到和發(fā)送一個(gè)連接請求后等待對連接請求的確認(rèn) 晰韵。
  • ESTABLISHED:代表一個(gè)打開的連接,雙方可以進(jìn)行或已經(jīng)在數(shù)據(jù)交互了熟妓, The socket has an established connection. 代表一個(gè)打開的連接雪猪,數(shù)據(jù)可以傳送給用戶。
  • FIN_WAIT1:主動關(guān)閉(active close)端應(yīng)用程序調(diào)用close起愈,于是其TCP發(fā)出FIN請求主動關(guān)閉連接只恨,之后進(jìn)入FIN_WAIT1狀態(tài)译仗。 The socket is closed, and the connection is shutting down. 等待遠(yuǎn)程TCP的連接中斷請求,或先前的連接中斷請求的確認(rèn)官觅。
  • CLOSE_WAIT:被動關(guān)閉(passive close)端TCP接到FIN后纵菌,就發(fā)出ACK以回應(yīng)FIN請求(它的接收也作為文件結(jié)束符傳遞給上層應(yīng)用程序),并進(jìn)入CLOSE_WAIT, The remote end has shut down, waiting for the socket to close. 等待從本地用戶發(fā)來的連接中斷請求 休涤。
  • FIN_WAIT2:主動關(guān)閉端接到ACK后咱圆,就進(jìn)入了FIN-WAIT-2 , Connection is closed, and the socket is waiting for a shutdown from the remote end. 從遠(yuǎn)程TCP等待連接中斷請求功氨。
  • LAST_ACK:被動關(guān)閉端一段時(shí)間后序苏,接收到文件結(jié)束符的應(yīng)用程序?qū)⒄{(diào)用CLOSE關(guān)閉連接。這導(dǎo)致它的TCP也發(fā)送一個(gè) FIN,等待對方的ACK.就進(jìn)入了LAST-ACK 捷凄, The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原來發(fā)向遠(yuǎn)程TCP的連接中斷請求的確認(rèn)杠览。
  • TIME_WAIT:在主動關(guān)閉端接收到FIN后,TCP就發(fā)送ACK包纵势,并進(jìn)入TIME-WAIT狀態(tài)踱阿。 The socket is waiting after close to handle packets still in the network.等待足夠的時(shí)間以確保遠(yuǎn)程TCP接收到連接中斷請求的確認(rèn)。
  • CLOSING:比較少見钦铁, Both sockets are shut down but we still don’t have all our data sent. 等待遠(yuǎn)程TCP對連接中斷的確認(rèn)软舌。
  • CLOSED: 被動關(guān)閉端在接受到ACK包后,就進(jìn)入了closed的狀態(tài)牛曹。連接結(jié)束佛点, The socket is not being used. 沒有任何連接狀態(tài)。
  • TIME_WAIT狀態(tài)的形成只發(fā)生在主動關(guān)閉連接的一方黎比。
  • 主動關(guān)閉方在接收到被動關(guān)閉方的FIN請求后超营,發(fā)送成功給對方一個(gè)ACK后,將自己的狀態(tài)由FIN_WAIT2修改為TIME_WAIT,而必須再等2倍 的MSL(Maximum Segment Lifetime,MSL是一個(gè)數(shù)據(jù)報(bào)在internetwork中能存在的時(shí)間)時(shí)間之后雙方才能把狀態(tài) 都改為CLOSED以關(guān)閉連接阅虫。目前RHEL里保持TIME_WAIT狀態(tài)的時(shí)間為60秒演闭。
還有 65% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颓帝,隨后出現(xiàn)的幾起案子米碰,更是在濱河造成了極大的恐慌,老刑警劉巖购城,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吕座,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘪板,警方通過查閱死者的電腦和手機(jī)吴趴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侮攀,“玉大人锣枝,你說我怎么就攤上這事厢拭。” “怎么了惊橱?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長箭昵。 經(jīng)常有香客問我税朴,道長,這世上最難降的妖魔是什么家制? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任正林,我火速辦了婚禮,結(jié)果婚禮上颤殴,老公的妹妹穿的比我還像新娘觅廓。我一直安慰自己,他們只是感情好涵但,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布杈绸。 她就那樣靜靜地躺著,像睡著了一般矮瘟。 火紅的嫁衣襯著肌膚如雪瞳脓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天澈侠,我揣著相機(jī)與錄音劫侧,去河邊找鬼。 笑死哨啃,一個(gè)胖子當(dāng)著我的面吹牛烧栋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拳球,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼审姓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祝峻?” 一聲冷哼從身側(cè)響起邑跪,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呼猪,沒想到半個(gè)月后画畅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宋距,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年轴踱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谚赎。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淫僻,死狀恐怖诱篷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雳灵,我是刑警寧澤棕所,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站悯辙,受9級特大地震影響琳省,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躲撰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一针贬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拢蛋,春花似錦桦他、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垃瞧,卻和暖如春嗓节,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背皆警。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工拦宣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人信姓。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓鸵隧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親意推。 傳聞我的和親對象是個(gè)殘疾皇子豆瘫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容