代码拉取完成,页面将自动刷新
同步操作将从 唯品会/VJTools 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
若你习惯以Top观察“OS指标及繁忙的进程”,也推荐以VJTop观看 “JVM指标及CPU最繁忙,内存占用最多的线程”。
另一用途是,监控系统发现指标超阈值时,钩子脚本调VJTop纪录事发地状况。
在jvmtop 的基础上二次开发,结合 SJK的优点,从/proc , PerfData,JMX等处,以更高的性能,获取更多的信息。
运行时不造成应用停顿,可在线上安全使用。
Maven Central 下载 - 108k
需要设置JAVA_HOME 环境变量,必须与目标JVM使用相同用户运行,如果执行时仍然有权限错误,改用root用户执行。
// 占用CPU最多的线程
./vjtop.sh <PID>
如果数据同时在PerfData和JMX存在,优先使用PerfData,如果PerfData被屏蔽,则使用JMX。
使用ThreadMxBean操作:
// 按时间区间内,线程占用的CPU排序,默认显示前10的线程,默认每10秒打印一次
./vjtop.sh <PID>
// 按线程从启动以来的总占用CPU来排序
./vjtop.sh --totalcpu <PID>
// 按时间区间内,线程占用的SYS CPU排序
./vjtop.sh --syscpu <PID>
// 按线程从启动以来的总SYS CPU排序
./vjtop.sh --totalsyscpu <PID>
VJTop 1.0.0 - 11:38:02, UPTIME: 3d01h
PID: 127197, JVM: 1.7.0_79, USER: even.liang
PROCESS: 0.99% cpu ( 0.04% of 24 core), 2491m rss, 0m swap
IO: 24k rchar, 1k wchar, 0 read_bytes, 0 write_bytes
THREAD: 97 active, 89 daemon, 99 peak, 461 created, CLASS: 12243 loaded, 0 unloaded
HEAP: 160m/819m eden, 0m/102m sur, 43m/1024m old
NON-HEAP: 55m/256m cms perm gen, 8m/96m codeCache
OFF-HEAP: 0m/0m direct, 0m/0m map
GC: 0/0ms ygc, 0/0ms fgc, SAFE-POINT: 6 count, 1ms time, 1ms syncTime
THREADS-CPU: 1.01% (user= 0.31%, sys= 0.70%)
TID NAME STATE CPU SYSCPU TOTAL TOLSYS
43 metrics-mercury-metric-logger-1-thread-1 TIMED_WAIT 0.38% 0.28% 25.48% 9.13%
110 metrics-mercury-metric-logger-2-thread-1 TIMED_WAIT 0.38% 0.18% 25.43% 9.10%
496 RMI TCP Connection(365)-192.168.200.87 RUNNABLE 0.05% 0.05% 0.00% 0.00%
82 Proxy-Worker-5-10 RUNNABLE 0.01% 0.01% 0.93% 0.30%
120 threadDeathWatcher-6-1 TIMED_WAIT 0.00% 0.00% 0.26% 0.09%
98 Proxy-Worker-5-16 RUNNABLE 0.00% 0.00% 0.80% 0.26%
99 Proxy-Worker-5-17 RUNNABLE 0.00% 0.00% 0.92% 0.31%
63 Proxy-Worker-5-2 RUNNABLE 0.00% 0.00% 1.07% 0.37%
70 Proxy-Worker-5-5 RUNNABLE 0.00% 0.00% 0.78% 0.26%
102 Proxy-Worker-5-20 RUNNABLE 0.00% 0.00% 0.80% 0.27%
Note: Only top 10 threads (according cpu load) are shown!
Cost time: 46ms, CPU time: 60ms
进程区数据解释:
rss
: Resident Set Size
, 该进程在内存中的页的数量。该数据从/proc/<pid>/status中获取, 含义与proc filesystem中一致。swap
: 被交换出去的虚存大小。该数据从/proc/<pid>/status中获取, 含义与proc filesystem中一致。rchar/wchar
: 通过系统调用的读/写的字节数。该数据从/proc/<pid>/io中获取,含义与proc filesystem中一致。read_bytes/write_bytes
: 真正达到存储层的读/写的字节数。该数据从/proc/<pid>/io中获取,含义与proc filesystem中一致。codeCache
: JIT编译的二进制代码的存放区,满后将不能编译新的代码。direct
: 堆外内存,但注意新版Netty不经过JDK API所分配的堆外内存未能纪录。SAFE-POINT
: PerfData开启时可用,JVM真正的停顿次数及停顿时间线程区数据解释:
CPU
: 线程在打印间隔内所占的CPU百分比(按单个核计算)SYSCPU
: 线程在打印间隔内所占的SYS CPU百分比(按单个核计算)TOTAL
: 从进程启动到现在,线程的总CPU时间/进程的总CPU时间的百分比TOLSYS
: 从进程启动到现在,线程的总SYS CPU时间/进程的总CPU时间的百分比底部数据解释:
Cost time
: 本次采集数据及输出的耗时CPU time
: 本次采集数据及输出的CPU时间占用// 线程分配内存的速度排序,默认显示前10的线程,默认每10秒打印一次
./vjtop.sh --memory <PID>
// 按线程的总内存分配而不是打印间隔内的内存分配来排序
./vjtop.sh --totalmemory <PID>
(忽略头信息)
THREADS-MEMORY: 30k/s allocation rate
TID NAME STATE MEMORY TOTAL-ALLOCATED
47636 RMI TCP Connection(583)-127.0.0.1 RUNNABLE 27k/s(88.76%) 17m( 0.00%)
1 main RUNNABLE 2k/s( 8.44%) 370g(83.16%)
47845 JMX server connection timeout 47845 TIMED_WAIT 251/s( 0.80%) 21k( 0.00%)
46607 Worker-501 TIMED_WAIT 60/s( 0.19%) 934m( 0.20%)
46609 Worker-502 TIMED_WAIT 60/s( 0.19%) 822m( 0.18%)
46610 Worker-503 TIMED_WAIT 60/s( 0.19%) 737m( 0.16%)
46763 Worker-504 TIMED_WAIT 60/s( 0.19%) 696m( 0.15%)
46764 Worker-505 TIMED_WAIT 60/s( 0.19%) 743m( 0.16%)
47149 Worker-506 TIMED_WAIT 60/s( 0.19%) 288m( 0.06%)
46551 Worker-500 TIMED_WAIT 60/s( 0.19%) 757m( 0.17%)
进程区数据解释:
allocation rate
: 所有线程在打印间隔内每秒分配的内存线程区数据解释:
STATE
: 该线程当前的状态MEMORY
: 该线程分配内存的瞬时值,即该线程在打印间隔内每秒分配的内存空间(该线程每秒分配的内存占所有线程在该秒分配的总内存的百分比)TOTAL-ALLOCATED
: 该线程分配内存的历史累计值,即从进程启动到现在,该线程分配的总内存大小,该总内存大小包括已回收的对象的内存(该线程分配的总内存大小占所有线程分配的总内存大小的百分比)。// 打印其他选项
./vjtop.sh -h
// 结果输出到文件
./vjtop.sh <PID> > /tmp/vjtop.log
// 每5秒打印一次(默认10秒)
./vjtop.sh -d 5 <PID>
// 显示前20的线程(默认10)
./vjtop.sh -l 20 <PID>
// 更宽的120字节的屏幕 (默认100)
./vjtop.sh -w 120 <PID> > /tmp/vjtop.log
// 打印20次后退出
./vjtop.sh -n 20 <PID>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。