使用Caliper对REST服务进行基准测试..是否



我想比较我提供的不同服务之间的响应时间。我听说过Caliper,所以我决定以一种非常简单的方式使用它来进行调用和测量,并使用一些类似的功能:

public void timeCallingService(int reps) {
    String url = "http://localhost:8080/myservice/rest/"+size;
    for (int i = 0; i < reps; i++) {
        new Client(url);
    }
}

其中size是Caliper和Client的给定参数,这是我写的一个类,它只需要调用服务并检查状态答案是否正确。

一切都很好,除了一些服务需要太多时间来回答,所以我在Caliper中有一个错误:

Error: Runtime 1.06027641E11ns/rep out of range 0.1-1.0E10

我试着玩一些参数,比如预热Millis和runMillis,但似乎不起作用。

因此:

  1. 有什么简单的方法可以解决我的问题吗
  2. 如果没有,考虑到我不想要任何复杂的东西,我可以使用哪个基准框架进行比较

对此我深表歉意。Caliper 0.5有一些类似的怪癖,但我们正在使用的Caliper 1.0(a)在这样计时时,对它期望看到的内容不太敏感,(b)使许多值可配置(例如计时间隔;你可以使其长于1秒),(c)如果MicrobenchmarkInstrument的逻辑对你不起作用,你还可以插入不同的测量仪器。

很遗憾,我还不能保证发布日期(

TimeMeasurer.class中使用的Caliper(请参阅源TimeMeasurer.java第80-84行)对确定有效可能时间的限制。此限制为下限(0.1 ns)和上限(10秒)。这就是为什么任何比上限更长的度量值或比下限更快的度量值都会引发RuntimeOutOfRangeException。因此,如果你真的坚持了这一点,那就试着用另一个极限来编译这个类,或者最好写信给caliper作者,并建议添加一个运行时参数about than(例如设置上限)。看起来(也许真的是这样),当纳秒对分析至关重要时,这个测量工具是用来测量快速过程的。当你测量某个东西,它超过10秒时,你可能应该使用另一种测量工具。。。无论如何,有一个解决方案。。。

相关内容

  • 没有找到相关文章

最新更新