衡量服务器响应GET请求所需的时间

时间:2018-05-02 15:23:57

标签: java dropwizard response-time

我希望能够看到sql数据库在我的应用中响应get方法需要多长时间。目前,我在方法运行之前和之后使用System.currentTimeMillis()测量它:

public long responseTime(long start, long end) {
    long elapsed = end - start;
    return elapsed;
};

@GET
public getAllProfiles() {
    long start = System.currentTimeMillis();
    profileDAO.getAllProfiles();
    long end = System.currentTimeMillis();
    long elapsed = responseTime(start, end);
    return elapsed;
}

我担心的是,我测量的是我的方法运行需要多长时间,而不是服务器响应该方法需要多长时间。有没有更好的方法来做这件事?

2 个答案:

答案 0 :(得分:1)

关于使用currentTimeMillis()的一点说明。事情发生了变化,但我发现millis只是每10毫升左右更新一次。要查看此内容,请尝试创建一个循环20次并使用Thread.sleep(1)的测试类。您将看到相同的millis值大约10倍,然后它将变为另一个大约10毫米的值。使用nanoTime()代替持续时间。

就您的问题而言,创建一个捕获时间并调用方法的测试类。不过,我怀疑你会看到很多不同。

答案 1 :(得分:1)

Dropwizard提供了您可以在JAX-RS资源方法上使用的@Timed annotation

@Timed
@GET
public List<Profile> getAllProfiles() {
    List<Profile> profiles = profileDAO.getAllProfiles();
    return profiles;
}

统计信息将在您的Dropwizard应用程序的管理上下文中提供,该应用程序通常在端口8081上提供。