
我們在阿姆斯特丹有自己的機架,Leaseweb。
我們使用 3 台 Windows 2019 IIS 伺服器進行 HTTP 負載平衡(透過 Cloudflare):
- 伺服器 1:裸機超微伺服器。運行 IIS、MySQL8 和 Redis。
- 伺服器 2:戴爾伺服器上的虛擬機器。運行 IIS。
- 伺服器 3:戴爾伺服器上的虛擬機器(伺服器 2 的精確副本)。運行 IIS。
這些文件在所有原因中都在本地提供(透過複製)
現在的問題是 TTFB,如在伺服器本地測量伺服器 2 和伺服器 3 (VM) 上的值較高。
使用 chrome 在本地運行(多個)測試:
伺服器1:
- 等待(TTFB):269ms
- 等待(TTFB):255ms
- 等待(TTFB):253ms
伺服器2:
- 等待(TTFB):379ms
- 等待(TTFB):376ms
- 等待(TTFB):369ms
伺服器3:
- 等待(TTFB):374ms
- 等待(TTFB):381ms
- 等待(TTFB):378ms
正如您所看到的,伺服器一的 TTFB 明顯較低。就CPU而言,伺服器2和3實際上更快:
PHP 基準腳本
Server1 總時間::4.022 秒。
Server2 總時間::2.866 秒。
Server3 總時間::2.936 秒。
所有伺服器的 I/O 大致相同。他們都有帶有硬體 raid 控制器的新 SSD。
我確實測試了將 Redis 移動到其中一台虛擬機,這樣我就可以弄清楚額外的延遲是否來自 Redis,但這並沒有什麼區別。
我的假設是 TTFB 中的額外延遲來自伺服器 1 上運行的 MySQL?即使 CPU 速度較慢,在同一台伺服器上執行 MySQL 也會產生明顯較小的 TTFB。
有解決方法嗎?
實際上,正確的問題是,如何確定額外延遲的原因是什麼?