“Hello world”Rust 网络服务器从 Chrome 而非 curl 测量时比 Node 慢

Att*_*Kun 11 performance latency node.js rust rust-rocket

我创建了一个存储库,其中包含基于 Node.js和基于Rocket.rs 的Web 服务器。

考虑以下步骤:

  1. 通过以下方式启动 Rocket.rs 服务器 cargo run --release
  2. 通过以下方式启动 Node.js 服务器 node server.js
  3. 在 Chrome 中并排打开 http://localhost:8000/ (Rocket) 和 http://localhost:8090/ (Node)。
  4. 打开开发者控制台后,我不断刷新两个选项卡,并观察到 ​​Node 选项卡总是在 5 毫秒内完成,而火箭选项卡有时需要超过 300 毫秒才能完成:

在此处输入图片说明

我也用 actix-web 观察到类似的事情,但程度较小:在这种情况下,如果我没有刷新选项卡大约 5 秒,我只会得到大约 300 毫秒的延迟。如果我不断刷新它,那么请求会在 5 毫秒内完成。

有趣的是,延迟似乎如果我通过像袅袅衡量不会出现这种。我的两台服务器都有大约 4 毫秒的延迟。

我注意到 Rocket 和 actix-web 不会在他们的响应中发送 Keep-Alive 标头。如果我理解正确,这对于 HTTP 1.1 请求应该无关紧要。

我正在使用安装了 Ubuntu 的 WSL 2。Chrome 在主机 Windows 中运行。

有人可以解释一下这里发生了什么吗?

更新:忘了说我是使用夜间编译器来构建火箭服务器的(Rocket v0.4.6 似乎需要它)。直接从主分支更改为稳定和构建摆脱了延迟。尽管如此,actix-web 延迟仍然有点令人担忧,因为我使用了稳定的编译器。

ElG*_*ito 1

全部从 Windows 运行,在 Node 中,响应时间约为 2-4 ms,在 Rocket 中1-2 ms。您的环境中发生了一些奇怪的事情。

也尝试过 WSL 发球,结果相同。

即使在调试(生锈)时,平均花费的时间也+1ms比发布时多,这可能是一些奇怪的浏览器问题。