我按照链接第一个REST API创建一个Restful API。
我可以在点击url: http://localhost:8080/hello-world?name=XXX时查看响应。
现在我想使用完成服务测试这个API的性能,并以人类可读的格式记录每次命中的响应时间。
我怎样才能做到这一点?
这很容易做到。有两种方法:
-
用度量或日志自己做。在您的资源中,您可以使用创建的指标并写出您想要的任何内容,例如:
@GET public String hello() { Timer timer = service.timer("test"); try(Context t = timer.time()) { return "Hello World"; } }
或者只是测量时间并将其记录在某处,例如:
@GET
public String hello() {
long currentTimeMillis = System.currentTimeMillis();
try {
return "Hello World";
} finally {
log.info("Request took: " + (System.currentTimeMillis() - currentTimeMillis) + " ms");
}
}
DW的替代方法是使用定时注释,如:
@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
这就是你所要做的。
使用指标将是首选的方法,因为您可以将其提交给石墨,然后在其他事物中绘制您的性能随时间的变化。
希望有帮助,
阿图尔
通常在许多应用程序中,我们使用石墨作为度量。
在dropwizard中向graite报告
http://metrics.dropwizard.io/3.1.0/manual/graphite/