增加 HTTP 负载平衡中的 TTFB

增加 HTTP 负载平衡中的 TTFB

我们在阿姆斯特丹有自己的机架,Leaseweb。

我们使用 3 台 Windows 2019 IIS 服务器进行 HTTP 负载平衡(通过 Cloudflare):

  • 服务器 1:裸机超微服务器。运行 IIS、MySQL8 和 Redis。
  • 服务器 2:戴尔服务器上的 VM。运行 IIS。
  • 服务器 3:戴尔服务器上的 VM(服务器 2 的精确副本)。运行 IIS。

所有文件均在本地提供(通过复制)

现在的问题是 TTFB,因为在服务器本地测量在服务器 2 和服务器 3 (虚拟机) 上更高。

使用 Chrome 在本地运行(多个)测试:

服务器 1:

  • 等待(TTFB):269毫秒
  • 等待(TTFB):255毫秒
  • 等待(TTFB):253毫秒

服务器2:

  • 等待(TTFB):379毫秒
  • 等待(TTFB):376毫秒
  • 等待(TTFB):369毫秒

服务器 3:

  • 等待(TTFB):374毫秒
  • 等待(TTFB):381毫秒
  • 等待(TTFB):378毫秒

如你所见,服务器 1 的 TTFB 明显更低。从 CPU 角度来看,服务器 2 和 3 实际上更快:

PHP 基准测试脚本

服务器1总时间::4.022秒

服务器2 总时间::2.866秒。

服务器3总时间::2.936秒。

所有服务器的 I/O 大致相同。它们都配有带硬件 RAID 控制器的新 SSD。

我确实测试过将 Redis 移动到其中一台虚拟机,这样我就可以弄清楚额外的延迟是否来自 Redis,但这并没有什么区别。

我的假设是 TTFB 中的额外延迟来自在服务器 1 上运行的 MySQL?在同一台服务器上运行 MySQL 会产生明显较小的 TTFB,即使 CPU 较慢。

有办法解决这个问题吗?

实际上,正确的问题是,我如何确定额外延迟的原因是什么?

相关内容