网站首页 > 技术文章 正文
定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。
在实际的故障排查、性能监控中,常常是操作系统的工具和Java虚拟机的工具结合使用。
1、操作系统工具
1.1、top:显示系统整体资源使用情况
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。
在Linux使用top命令的部分输出如下:
top命令
top命令的输出可以分为两个部分:前半部分是系统统计信息,后半部分是进程信息。
在统计信息中:
- 第1行是任务队列信息,从左到右依次表示:系统当前时间、系统运行时间、当前登录用户,最后的load average表示系统的平均负载。
- 第2行是进程统计信息,分别有正在运行的进程数、睡眠进程数、停止的进程数、僵尸进程数。
- 第3行是CPU统计信息,us表示用户空间CPU占用率,sy表示内核空间CPU占用率、ni表示用户进程空间改变过优先级的进程cpu的占用率、id表示空闲cpu占用率、wa表示等待输入输出的CPU时间百分比、hi表示硬件中断请求、si表示软件中断请求。
在进程信息区中,显示了系统各个进程的资源使用情况。主要字段的含义:
- PID:进程id
- USER:进程所有者的用户名
- PR:优先级
- NI:nice值,负值表示高优先级,正值表示低优先级
- TIME+:进程使用的CPU时间总计,单位1/100秒
- COMMAND:命令名/命令行
1.2、vmstat:监控内存和CPU
vmstat也是一款功能比较齐全的性能监测工具。它可以统计CPU、内存使用情况、swap使用情况和信息。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
vmstat命令
以下命令表示每秒采样一次,共三次。
输出的各个列的含义:
1.3、iostat:监控IO使用
iostat可以提供磁盘IO的监控数据:
avg-cpu: %user %nice %system %iowait %steal %idle
1.44 0.00 0.39 0.00 0.00 98.17
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.37 0.47 30.30 3561197 229837730
dm-0 0.44 0.33 29.97 2518272 227313194
dm-1 0.12 0.13 0.33 1013276 2520308
dm-2 0.00 0.00 0.00 502 2068
以上命令显示了CPU的使用概况和磁盘I/O的信息。
输出结果各个列的含义:
iostat结果面板 avg-cpu 描述的是系统cpu使用情况:
- %user:CPU处在用户模式下的时间百分比。
- %nice:CPU处在带NICE值的用户模式下的时间百分比。
- %system:CPU处在系统模式下的时间百分比。
- %iowait:CPU等待输入输出完成时间的百分比。
- %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
- %idle:CPU空闲时间百分比。
1.4、netstat:监控网络使用
在web程序中,可能运行需要网络,可以使用netstat命令监控网络流量。
netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:30037 *:* LISTEN
udp 0 0 *:bootpc *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket
...
以上命令表示列出所有端口信息。
2、JDK性能监控工具
除了我们比较熟悉的java.exe、javac.exe这两个命令行工具,在jdk的bin目录下,还有一些其它的工具。。除了编译和运行Java程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会用到它们。
jdk命令行工具
2.1、jps:虚拟机进程查看
jps类似Linux下的ps,它会列出Java程序的进程。
jps命令格式:
jps [ options ] [ hostid ]
jps命令示例:
jps的常用选项见表:
2.2、jstat:虚拟机运行时信息查看
jsta是一个强大的工具。它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。
jstat命令格式为:
jstat [ option vmid [interval[s|ms] [count]] ]
选项option代表用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况。
如下,输出Java进程5728的ClassLoader相关信息,每秒统计一次信息,一共输出两次。
jsta示例
下例展示了与GC相关的对信息的输出:
jstat GC堆
jstat工具主要选项:
2.3、jinfo:虚拟机配置查看
jinfo的作用是实时查看和调整虚拟机各项参数。
jinfo命令格式:
jinfo [ option ] pid
下例显示了新生爱对象晋升老年代的最大年龄。在应用程序启动时,没有指定,但通过jinfo,查看该参数的当前数值。
jinfo查看新生代晋升年龄
查看是否打印GC详细信息:
查看是否打印GC详细信息
2.4、jmap:内存映像(导出)
jmap命令用于生成堆转储快照(一般称为heapdump或dump文件)
jmap的作用并不仅仅是为了获取堆转储快照,它还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等。
jmap命令格式:
jmap [ option ] vmid
如下,使用jmap生成PID为5728的Java程序的对象统计信息, 并输出到dump.txt中。
jmap
dump.txt的结构如下:
dump.txt
jmap更重要的功能是得到Java程序的当前堆快照:
jmap转储堆快照
如图,将应用程序的堆快照输出到D盘的heap.hprof文件中,之后,可以通过多种工具分析该堆文件。
jmap工具主要选项:
2.5、jhat:堆转储快照分析
JDK提供jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器中查看。
以前面生成的heap.hprof为例:
jhat分析堆快照
屏幕显示“Server is ready.”的提示后,用户在浏览器中输入http://localhost:7000/可以看到分析结果
jhat分析结果
2.6、jstack:Java堆栈跟踪
jstack命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者 javacore文件)。
jstack命令格式:
jstack [ option ] vmid
如下,使用stack查看线程堆栈的部分结果:
使用jstack查看线程堆栈
jstack工具主要选项:
2.7、jcmd:多功能命令
在jdk1.7以后,新增了一个请打的命令行工具jcmd,它可以实现上面除了jstat外所有命令的功能。
例如,使用jcmd列出当前系统中的所有运行中的Java虚拟机:
jcmd列出虚拟机
jmcd命令格式:
jcmd <pid | main class> <command ... | PerfCounter.print | -f file>
jmcd工具主要选项:
猜你喜欢
- 2025-06-30 因为不会手写nextTick又被面试官diss了
- 2025-06-30 分布式控制系统DCS和SCADA的区别和联系
- 2025-06-30 Redis系列:深刻理解高性能Redis的本质
- 2025-06-30 数字孪生与物联网(IoT)集成:设备实时监控与预警的联动方案
- 2024-10-07 语音直播系统源码,前端监控存在的意义
- 2024-10-07 为什么大厂前端监控都在用GIF做埋点?
- 2024-10-07 前端错误监控-Sentry自动捕获前端应用异常原理
- 2024-10-07 智能一体化视频监控前端箱的技术参数
- 2024-10-07 前端监控 SDK 的一些技术要点原理分析
- 2024-10-07 前端监控 SDK 开发分享 前端监控 sdk 开发分享方案
你 发表评论:
欢迎- 580℃几个Oracle空值处理函数 oracle处理null值的函数
- 575℃Oracle分析函数之Lag和Lead()使用
- 561℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 560℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 556℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 545℃【数据统计分析】详解Oracle分组函数之CUBE
- 533℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 529℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)