gpt4 book ai didi

tomcat - 如何在没有网络传输时间的情况下测量请求的执行时间?

转载 作者:行者123 更新时间:2023-11-28 22:09:46 26 4
gpt4 key购买 nike

在我的阀门中,我得到了我的 http 查询的执行时间:

public void invoke(Request request, Response response) 
throws IOException, ServletException {
long t1 = System.currentTimeMillis();
getNext().invoke(request, response);
long t2 = System.currentTimeMillis();
long time = t2 - t1;
...
}

我怀疑我这样得到的时间不仅给我服务器端执行时间而且还给我网络时间?可能吗?

(因为根据执行请求的客户端,测量的平均时间与一个 ip 的平均时间不同,我有 70ms 的平均时间,另一个 ip 为 270ms)

我在过滤器中编写了完全相同的代码:

long before = System.currentTimeMillis();
chain.doFilter(request, response);
long after = System.currentTimeMillis();

,但在我的测试中,Valve 和过滤器中的执行时间是相同的...

我更感兴趣的是只获取我的 servlet 的执行时间。但如果我也能得到发送最后一个字节的时间,我会很感兴趣。

非常感谢您向我解释关于阀门和过滤器的知识。

最佳答案

I suspect that the time I get this way, not only give me the server side execution time but also the network time ? Is it possible ?

没错。至少,涉及传输请求体的网络时间的一部分包含在总时间中。一旦请求 headers 被完全读取和解析,阀/过滤器/servlet 代码就会被直接调用。请求 body 不一定在此时被完全阅读。请求正文包含客户端作为请求的一部分通过网络发送的任何内容(例如提交的表单数据)。只有当过滤器/servlet 开始读取和解析完整的请求主体时,例如getParameter()getReader()getInputStream()等,那么请求体的所有字节都会被实际传输。

您可能希望重写执行时间测量,使其仅在请求正文被完全读取后才开始。这意味着您确实必须在 servlet 内部对其进行测量。

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Read the request body.
String foo = request.getParameter("foo");
String bar = request.getParameter("bar");
// ...

// Now, start the stopwatch.
long startTime = System.nanoTime();

// Now, do the business job.
someService.process(foo, bar, ...);
// ...

// Now, stop the stopwatch.
long elapsedTime = System.nanoTime() - startTime;

// I don't think that you want to include JSP rendering in total time, right?
request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);
}

(请注意,我使用了 System#nanoTime(),因为它的精度好得多)

关于tomcat - 如何在没有网络传输时间的情况下测量请求的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com