JVM(5)分析工具

给系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:cpu、网络、内存、磁盘、运行日志、异常堆栈、 GC 日志、线程快照 ( threaddump/javacore 文件)、堆转储快照( heapdump/hprof 文件)等。经常使用适当的虚拟机监控和分析的工具可以加快我们分析数据、定位解决问题的速度。

1、系统工具

1.1、top

top命令用于显示所有运行和活跃的实时进程并定期更新它。它显示了cpu使用率,内存使用率,交换内存,缓存大小,缓冲区大小,进程pid,用户,命令等等。它也展示了运行进程的高cpu利用率和内存利用率。top命令对系统管理员监视和在需要的时候采取正确的行动是非常的重要。

top命令使用方法:

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

参数说明:

  • d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
  • p:通过指定监控进程ID来仅仅监控某个进程的状态。
  • q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
  • S:指定累计模式。
  • s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
  • i:使top不显示任何闲置或者僵死进程。
  • c:显示整个命令行而不只是显示命令名。

top的内部命令:

  • s – 改变画面更新频率

  • l – 关闭或开启第一部分第一行 top 信息的表示

  • t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

  • m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

  • N – 以 PID 的大小的顺序排列表示进程列表

  • P – 以 CPU 占用率大小的顺序排列进程列表

  • M – 以内存占用率大小的顺序排列进程列表

  • h – 显示帮助

  • n – 设置在进程列表所显示进程的数量

  • 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系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

htop相比较top的优势:

  • 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。

  • 在启动上比top 更快。

  • 杀进程时不需要输入进程号。

  • htop 支持鼠标选中操作(反应不太快)。

  • top 已不再维护。

示例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 统计虚拟内存信息,可以对操作系统的proc、memory、CPU、IO等信息进行统计以呈现给用户。

vmstat语法:

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

参数说明:

  • [ -a ] 显示 活动(active)和 非活动(inactive)的内存。
  • [ -n ] 只显示头信息,不周期性显示。这里没有测试出-n的作用,貌似有和没有,结果都一样。
  • [ -f ] 显示自开机以来forks的总数,包括fork、vfork和clone system calls,总数和tasks创建的数量是一致的。
  • [ -s ]显示各种事件计数器表和内存统计信息,这显示不重复。
  • [ -m ]显示slabinfo,好像是缓存相关的,对这个完全不懂。可以对比一下/proc/slabinfo的内容。
  • [ -V ]显示版本信息。
  • [ -d ]显示磁盘数据(disk statistics)
  • [ -D ]显示磁盘统计表(disk table)
  • [ -S 单位 ]

k:1000

K:1024 (默认为K)

m:1000000

M:1048576

比较:k和K

  • [ -p 分区 ]显示磁盘分区数据(disk partition statistics )
  • [ delay [ count ] ] delay是间隔,count显示多少次信息。可以和上面的某些参数结合使用。

示例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是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

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是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

netstat常见参数:

  • -a (all) 显示所有选项,默认不显示LISTEN相关。
  • -t (tcp) 仅显示tcp相关选项。
  • -u (udp) 仅显示udp相关选项。
  • -n 拒绝显示别名,能显示数字的全部转化成数字。
  • -l 仅列出有在 Listen (监听) 的服务状态。
  • -p 显示建立相关链接的程序名
  • -r 显示路由信息,路由表
  • -e 显示扩展信息,例如uid等
  • -s 按各个协议进行统计
  • -c 每隔一个固定时间,执行该netstat命令。

LISTEN和LISTENING的状态只有用-a或者-l才能看到。

netstat网络状态详解:

一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手。


tcp.png
  • SYN:(同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
  • ACK:(确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
  • FIN:(结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。
  • LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN, The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 。
  • SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接,之后状态置为SYN_SENT,The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求。
  • SYN_RECV:服务端应发出ACK确认客户端的SYN,同时自己向客户端发送一个SYN, 之后状态置为SYN_RECV ,
  • A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 。
  • ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互了, The socket has an established connection. 代表一个打开的连接,数据可以传送给用户。
  • FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态。 The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认。
  • CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT, The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 。
  • FIN_WAIT2:主动关闭端接到ACK后,就进入了FIN-WAIT-2 , Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求。
  • LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK , The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认。
  • TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态。 The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认。
  • CLOSING:比较少见, Both sockets are shut down but we still don’t have all our data sent. 等待远程TCP对连接中断的确认。
  • CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束, The socket is not being used. 没有任何连接状态。
  • TIME_WAIT状态的形成只发生在主动关闭连接的一方。
  • 主动关闭方在接收到被动关闭方的FIN请求后,发送成功给对方一个ACK后,将自己的状态由FIN_WAIT2修改为TIME_WAIT,而必须再等2倍 的MSL(Maximum Segment Lifetime,MSL是一个数据报在internetwork中能存在的时间)时间之后双方才能把状态 都改为CLOSED以关闭连接。目前RHEL里保持TIME_WAIT状态的时间为60秒。
还有 65% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容