jHiccup:提供平台中JVM暂停的日志和记录

jHiccup

jHiccup是一个非侵入式插装工具(instrumentation tool),可以记录程序运行中的抖动(jHiccup),包括Java应用程序中经常发生的暂停(stall)以及其它影响应用持续执行的操作系统或硬件故障等。jHiccup由Azul Systems公司的Gil Tene开发,遵循CC0 1.0协议发布。
jHiccup可以通过下面3种方式之一执行:

  1. 作为Java agent使用:(执行:java -javaagent:jHiccup.jar)
  2. 注入到运行程序中(执行:jHiccup -p <pid>)
  3. 也可以作为命令行包装运行(执行jHiccup java myProg ...)

jHiccup示例

jhiccup_demo

作为Java agent使用

jHiccup通常可以作为Java agent使用,非常适合下面的应用场景:比如将Java Agent集成到启动脚本,或者用jHiccup bash脚本不方便的地方(像Windows或者无法从命令行启动) 。

通过下面的命令可以将jHiccup.jar作为Java agent启动:

或者

可以执行下列命令找到可用的Java agent模式参数:

下面是Java agent带参数使用示例:

上面的示例会将MyProgram.jar中的hiccups(抖动)记录到hiccuplog中,同时将独立JVM中运行的控制程序中的hiccups记录到c.hiccuplog中。启动后会立即记录(默认30s记录一次),并且区间数据(interval data)会每隔1s(默认5s)记录一次。

注意事项:

  • 空格、逗号、分号会被当做分隔符 ([ ,;]+)。例如“-d 0 -i 1000”会被看做“-d,0,-i,1000”。
  • 可以通过 _JAVA_OPTIONS 环境变量使用:

使用jHiccupLogProcessor读取并处理jHiccup日志

jHiccup记录的hiccup信息存储为histogram日志格式(HdrHistogram.org 一个数据分析和图形展示工具)。可以通过jHiccupLogProcessor将jHiccup日志转成为可读信息:

处理后的日志文件包括mylog和>mylog.hgrm,便于阅读和理解。

注入已运行的程序

如果运行环境支持Java Attach API(通常为JDK 1.6或更高版本),可以将jHiccup agent注入运行中的Java应用程序。

注意:需要确保 将${JAVA_HOME}/lib/tools.jar加入classpath。

作为脚本包装运行

只要将“jHiccup”放在Java调用的命令前面即可,例如:

启动命令会变为:

或者执行:

启动命令变为:

或者可以改变默认参数和日志文件,启动延迟改为60s日志文件改为hlog:

文件还包含了一个简单的“Idle”类,可以执行完整性检查。 例如:jHiccup延迟4s启动,空转30秒后退出。

运行jHiccup -h或者查看jHiccup注释了解更多信息。

支持平台

jHiccup在下列平台通过测试,可正常运行:

  • 各种Linux分支(RHEL/CentOS 5.x 和6.x)
  • Mac OS X (Lion 10.7)
  • 带Cygwin的Windows环境(Windows 7)
  • Solaris(SPARC和x86架构)

开源地址:https://github.com/giltene/jHiccup

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 收藏

资源整理者简介:唐尤华

做自己喜欢的,编程、喝茶、看世界 个人主页 · 贡献了108个资源 · 18 ·     


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1440 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer