Java 测量servlet的总网络传输时间

Java 测量servlet的总网络传输时间,java,tomcat,servlets,time,sockets,Java,Tomcat,Servlets,Time,Sockets,如何衡量客户机等待请求的时间 在服务器端,这很容易,例如通过过滤器。 但是,如果我们想考虑到总时间,包括延迟和数据传输,它变得很困难 是否可以访问底层套接字以查看请求何时完成? 还是有必要做一些javascript技巧?也许通过浏览器和服务器之间的时钟同步?是否有用于此任务的预制javascripts?您可以设置一个0字节的套接字发送缓冲区(我不建议这样做),以便在阻止对HttpResponse.send()的调用时,您可以更清楚地知道最后一个字节的剩余时间,但不包括行程时间Ekk——我甚至提到

如何衡量客户机等待请求的时间

在服务器端,这很容易,例如通过过滤器。 但是,如果我们想考虑到总时间,包括延迟和数据传输,它变得很困难

是否可以访问底层套接字以查看请求何时完成?
还是有必要做一些javascript技巧?也许通过浏览器和服务器之间的时钟同步?是否有用于此任务的预制javascripts?

您可以设置一个0字节的套接字发送缓冲区(我不建议这样做),以便在阻止对HttpResponse.send()的调用时,您可以更清楚地知道最后一个字节的剩余时间,但不包括行程时间Ekk——我甚至提到它都感到恶心。您可以使用特定于连接器的设置在Tomcat中执行此操作。()

或者您可以提出某种javascript时间戳方法,但我不希望设置客户端时钟。必须对web服务器进行多次调用

  • 时间戳查询
  • 真正的要求
  • 报告数据
这种方法将覆盖延迟,尽管仍然存在一些抖动变化


嗯……你有个有趣的问题。:)

您可以设置一个0字节的套接字发送缓冲区(我并不推荐这样做),这样在阻止调用HttpResponse.send()时,您就可以更清楚地知道最后一个字节的剩余时间,但不包括行程时间Ekk——我甚至提到它都感到恶心。您可以使用特定于连接器的设置在Tomcat中执行此操作。()

或者您可以提出某种javascript时间戳方法,但我不希望设置客户端时钟。必须对web服务器进行多次调用

  • 时间戳查询
  • 真正的要求
  • 报告数据
这种方法将覆盖延迟,尽管仍然存在一些抖动变化


嗯……你有个有趣的问题。:)

如果您想从浏览器中测量它以模拟任何客户端请求,您可以在firebug中查看net选项卡以查看下载页面的每一部分所需的时间和下载顺序。

如果您想从浏览器中测量它以模拟任何客户端请求,您可以在firebug中查看net选项卡以查看每一部分所需的时间下载页面的一部分和下载顺序。

您无法完全从服务器端知道客户端需要等待多长时间。你需要一些JavaScript

您不想同步客户端和服务器时钟,这太过分了。只需测量客户机发出请求和完成显示响应之间的时间

如果客户机是AJAX,这可能非常简单:调用new Date().getTime()以获取请求发出时的时间(以毫秒为单位),并将其与解析结果后的时间进行比较。然后在后台将此计时信息发送到服务器


对于非AJAX应用程序,当用户单击请求时,使用JavaScript将当前时间戳(从客户端的角度)与查询一起发送到服务器,并在重新加载生成的页面时将相同的时间戳传递回客户端。在该页面的onLoad处理程序中,测量总运行时间,然后将其发送回服务器-使用XmlHttpRequest或在向服务器发出的下一个请求上附加一个额外参数。

您无法完全从服务器端知道客户端需要等待多长时间。你需要一些JavaScript

您不想同步客户端和服务器时钟,这太过分了。只需测量客户机发出请求和完成显示响应之间的时间

如果客户机是AJAX,这可能非常简单:调用new Date().getTime()以获取请求发出时的时间(以毫秒为单位),并将其与解析结果后的时间进行比较。然后在后台将此计时信息发送到服务器


对于非AJAX应用程序,当用户单击请求时,使用JavaScript将当前时间戳(从客户端的角度)与查询一起发送到服务器,并在重新加载生成的页面时将相同的时间戳传递回客户端。在该页面的onLoad处理程序中,测量总运行时间,然后将其发送回服务器-使用XmlHttpRequest或在向服务器发出的下一个请求上附加一个额外参数。

您可以包装HttpServletResponse对象和HttpServletResponse返回的OutputStream。当输出开始写入时,您可以设置startDate,当它停止时(或刷新时等),您可以设置stopDate

这可用于计算将所有数据流式传输回客户端所需的时间长度

我们在应用程序中使用了它,这些数字看起来很合理


编辑:您可以在ServletFilter中设置开始日期,以获取客户端等待的时间长度。我给出了将输出写入客户端所需的时间长度。

您可以包装HttpServletResponse对象和HttpServletResponse返回的OutputStream。当输出开始写入时,您可以设置startDate,当它停止时(或刷新时等),您可以设置stopDate

这可用于计算将所有数据流式传输回客户端所需的时间长度

我们在应用程序中使用了它,这些数字看起来很合理

编辑:您可以在ServletFilter中设置开始日期,以获取客户端等待的时间长度。我给了您将输出写入客户端所需的时间长度。

签出,由netflix开发,为他们提供更准确的页面总视图->页面呈现时间签出,由netflix开发,为他们提供更准确的tot视图