【发布时间】:2013-02-18 14:43:57
【问题描述】:
由于服务器和客户端之间的地理距离,网络延迟可能会有很大差异。所以我想得到“纯”的req。无网络延迟的服务处理时间。
我想将网络延迟作为 TCP 连接时间。据我了解,这次很大程度上取决于网络。
主要思想是计算:
- TCP 连接时间,
- TCP 第一个数据包接收时间,
- 获取“纯”服务时间 = TCP 第一个数据包接收(等待时间)- TCP 连接。
我将 TCP 连接除以 2,因为实际上有 2 个请求-响应(3 次握手)。
我有两个问题:
- 我应该计算 TCP 所有数据包的接收时间,而不是只计算第一个数据包吗?
- 这种方法一般可以吗?
PS:作为工具,我使用 Erlang 的 gen_tcp。我可以显示代码。
【问题讨论】:
-
您能否在与服务器相同的局域网(甚至同一台机器)上运行客户端?那么网络延迟应该几乎可以忽略不计。
-
在服务器上运行
tcpdump是一个选项吗? -
没有。我检查远程 Web 服务。
-
我很困惑你试图分析什么。您是在尝试分析解析 HTTP 请求或 TCP 处理时间所花费的时间,还是只是通过某些应用程序服务处理请求(即 mvc 框架,这将是控制器处理)?其次,这是为了什么以及为什么需要这样做。
-
Adam,我只想获取服务处理请求时间。为了得到它,我从 HTTP-TCP 请求周期(连接-发送-处理-接收)中减去网络延迟时间。我需要这个“纯”服务请求处理时间来给服务在性能方面排名。