如何使用dropwizard作为框架记录Restful API调用的性能结果?

时间:2016-06-28 10:50:21

标签: java rest dropwizard

我按照First REST API链接创建了Restful API。

我可以查看关于点击网址的响应:http://localhost:8080/hello-world?name=XXX

现在,我想使用人类可读格式的每次点击使用完成服务和日志响应时间来测试此API的性能。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

这很容易做到。有两种方法:

  1. 使用指标或日志记录自行完成。在您的资源中,您可以使用创建的指标并写出您想要的任何内容,例如:

     @GET
     public String hello() {
    
        Timer timer = service.timer("test");
    
        try(Context t = timer.time()) {
            return "Hello World";
        }
    
    }
    
  2. 或者只是测量时间并将其记录在某处,例如:

        @GET
        public String hello() {
            long currentTimeMillis = System.currentTimeMillis();
            try {
                return "Hello World";
            } finally {
                log.info("Request took: " + (System.currentTimeMillis() - currentTimeMillis) + " ms");
            }
    }
    

    这样做的替代方法是使用定时注释,例如:

    @GET
    @Timed(name="wohoho")
    public String hello() {
        return "Hello World";
    }
    

    这等同于手动方法(指标的名称将是“wohoho”)。

    此外,您需要报告指标,例如:

    ConsoleReporter.forRegistry(environment.metrics()).build().start(10, TimeUnit.SECONDS);
    

    这将每十秒报告一次,结果如下:

    -- Timers --------------------------------------------
    dw.HelloResource.wohoho
                 count = 9
             mean rate = 0.13 calls/second
         1-minute rate = 0.11 calls/second
         5-minute rate = 0.03 calls/second
        15-minute rate = 0.01 calls/second
                   min = 0.16 milliseconds
                   max = 5.41 milliseconds
                  mean = 0.90 milliseconds
                stddev = 1.43 milliseconds
                median = 0.46 milliseconds
                  75% <= 0.59 milliseconds
                  95% <= 5.41 milliseconds
                  98% <= 5.41 milliseconds
                  99% <= 5.41 milliseconds
                99.9% <= 5.41 milliseconds
    

    这就是你要做的一切。

    使用指标是首选方式,因为您可以使用将它提交给石墨,然后绘制你的表现随着时间的推移。

    希望有所帮助,

    阿图尔

答案 1 :(得分:0)

通常在许多应用程序中,我们使用Graphite作为指标。

此处显示了向dropwizard报告grahite

http://metrics.dropwizard.io/3.1.0/manual/graphite/