jHiccup

为 Java 提供运行时响应时间分析
授权协议 CCL
开发语言 Java SHELL
所属分类 开发工具、 性能测试和优化
软件类型 开源软件
地区 不详
投 递 者 马魁
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Azul System公司于12月13日宣称发布了开源工具jHiccup,设计该工具的目的是对与应用程序底层运行平台相关的暂停和延迟(或“hiccups”)做出度量。新工具的功能与Azul的 JitterMeter有部分重叠,但它为创建图形化的输出增加了基于Excel的工具。另外它还计划增加基于Java用于生成图表的工具。此外,想要针 对应用程序使用jHiccup也相当简单。你只需要在用来启动应用程序的java -c命令之前增加jHiccup即可。

jHiccup会捕获运行时的响应时间,对其记录日志,并通过“Hiccup图”来显示。这个工具不会度量应用程序代码导致的延迟,而是会捕获由底 层运行时平台所导致的外部延迟,那会对所有在当时运行的应用程序产生影响。用来达到这种效果的技术非常简单: jHiccup会向应用程序增加一个线程,它会休眠1ms,然后唤醒,并查看距上次唤醒间隔了多长时间,如果超过1ms,那么就会在内部记录日志。这样, 你就拥有了最佳响应时间的基准。

其中的一些“Hiccup图”会对你很有帮助。第一个图会显示出静默系统(quiet system)中的空闲应用(idle app)。图的顶部显示的是jHiccup系统所检测到的内容,并且会显示占整体运行的百分比。在下面,工具会提供更多详细的百分比样例,这是基于 10000点的样例。如果系统(而不是应用程序)繁忙,那么我们就会看到延迟的数量上升,因为调度程序会占用大部分应用程序的时间。

空闲系统

下面的第二幅图显示的是真实的案例,来自于使用CMS collector运行在Hotspot的电信收费应用程序。通过与垃圾回收日志关联分析,我们可以知道在此显示的是主要和次要的垃圾回收事件。CMS是 一种分代的回收程序(generational collector),它会把对象隔离为新一代和旧一代,并优先收集新一代的对象。这个应用程序在电信收费程序中很典型,它对于新一代对象很难处理,因为 它需要跟踪大量只持续几秒钟就消失的会话。因此,大量新一代中的会话都会被回收。而更大的旧一代会话会造成暂停。

电信应用

jHiccup提供了一种很简单的方式,让你知道应该在什么地方进行优化,它会向你展示在应用程序本身有多少特定的性能问题,以及在其他地方——像Java虚拟机、操作系统、管理程序(如果用到的话)以及硬件——中有多少问题。它已经基于Creative Commons license开源。

介绍内容来自:http://www.infoq.com/cn/news/2011/12/jHiccup

 相关资料
  • 2.17 响应时间(边缘) 2.17.1 描述 返回5分钟颗粒度的状态码明细数据,主要返回时间戳、省份、运营商、HIT/MISS、状态码、响应时间、请求数 2.17.2 请求地址 地址: https://api.bokecs.com/channel/responseTime?time={time}domain={domain} 2.17.3 请求方式 GET 2.17.4 请求参数 参数名称 是否

  • 我对Gatling/Scala完全陌生。 我有一个场景要执行。它是这样的: -->改变员工的轮班时间。 请帮助执行上述操作。一个步骤的详细解释将非常感谢考虑到我是完全新的这一点。 谢了!

  • TLDR:我希望每个月使用dataflow API和模板运行和不同的查询。如果这是不可能的,那么我是否可以在运行时将查询传递给,同时仍然使用Dataflow API和模板? 我有一个数据流“批处理”数据管道,它读取一个BigQuery表,如下所示 的查询参数由如下函数计算 这里有几件事要注意 我想每天运行此数据管道一次 表id每月都在变化。例如,这个月的表id是,下个月的表id是,所有这些都是由上

  • 2.18 首包响应时间(边缘) 2.18.1 描述 返回5分钟颗粒度的状态码明细数据,主要返回时间戳、省份、运营商、HIT/MISS、状态码、响应时间、请求数 2.18.2 请求地址 地址: https://api.bokecs.com/channel/responseTime?time={time}domain={domain} 2.18.3 请求方式 GET 2.18.4 请求参数 参数名称

  • 如何为Spring AOP方面提供超时执行? MyAspect的记录器方法的执行时间不应超过30秒,如果不是,我会想要停止方法执行。我该怎么做? MyAspect代码: myService接口: MyServiceImpl:

  • 我使用CXF和JAX-RS构建RESTFul API,为我的web应用程序提供数据。我想知道是否有可能记录请求X到达我的API、被处理然后作为响应返回所花费的时间。 我已经将自己的CXF记录器定义为JAX-RS特性,因为<code> 有没有一种方法可以从客户端跟踪时间并记录下来?