【问题标题】:How to calculate total request time如何计算总请求时间
【发布时间】:2016-05-10 22:39:43
【问题描述】:

场景如下:

Android 应用程序向位于 EC2 实例上的 ASP.NET MVC 应用程序提交 POST/GET 请求,然后通过 SignalR 通知用户。

问题是,有没有一种方法可以测量从用户在手机上提交数据到最终用户在浏览器中显示该信息的确切时间(以毫秒为单位)。

我尝试从手机发送时间戳,将其发送给最终用户并用 JavaScript 计算总时间,但这并不可靠和准确。

有什么想法吗?

【问题讨论】:

    标签: time performance-testing


    【解决方案1】:

    您可以设置一个代理,将流量从电话中继到后端。然后,代理将能够为您提供从客户端应用程序发送请求以及从服务器后端返回响应的准确时间。

    但是,它不会告诉您 UI 何时更新并且用户可以实际访问信息,但应用程序接收信息和 UI 更新之间的延迟通常是恒定的,因此也许您可以将该常量添加到测量。

    有关在移动设备上设置 HTTP 代理的更多信息:

    How to change proxy settings in Android (especially in Chrome)

    https://www.charlesproxy.com/documentation/faqs/using-charles-from-an-iphone/

    【讨论】:

    • 也许我理解错了,但是如果手机的时钟和代理的时钟相差一毫秒,代理怎么知道准确的旅行时间?
    • 代理测量完成请求从客户端(电话)到达的那一刻到响应被发送回客户端所花费的时间。用户经历的时间还包括请求和响应在代理和电话之间中继所需的时间,以及在向用户显示内容之前在客户端完成的任何计算所需的时间,但这些延迟通常是恒定和/或可能非常小(例如,将代理服务器放在 WiFi 接入点所在的同一 LAN 上,手机用于连接到互联网)
    【解决方案2】:

    我发现跟踪此类用例时间的最佳方法是在每个阶段添加时间戳,在本例中为:client、asp.net、signalr。通过这种方式,您可以获得有关每个任务延迟的信息,即使客户端时间戳不可靠,我们仍然可以使用带有边界的信息。当客户端时间戳与服务器时间戳太远时,您可以将其丢弃。这是我之前的一项工作中的设置,我们用于跟踪 Web 服务的延迟。

    【讨论】:

    • 不幸的是,这对我们不起作用,因为我们试图以毫秒为单位测量性能,如果手机的时钟和服务器/最终用户的时钟关闭了一秒钟,它已经关闭了 1000 毫秒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2014-07-13
    • 2021-11-25
    • 2011-05-09
    • 2021-08-21
    • 2022-01-03
    • 2012-02-15
    相关资源
    最近更新 更多