
私たちはアムステルダムに独自のラック、Leaseweb を持っています。
私たちは、3 台の Windows 2019 IIS サーバーを使用して HTTP ロード バランシング (Cloudflare 経由) を実行します。
- サーバー 1: ベアメタル Supermicro サーバー。IIS、MySQL8、Redis を実行します。
- サーバー 2: Dell サーバー上の VM。IIS を実行します。
- サーバー 3: Dell サーバー上の VM (サーバー 2 の正確なコピー)。IIS を実行します。
ファイルはすべての原因でローカルに提供されます(レプリケーション経由)
問題はTTFBがサーバー上でローカルに測定サーバー 2 とサーバー 3 (VM) では高くなります。
Chrome を使用してローカルで (複数の) テストを実行する:
サーバー1:
- 待機時間 (TTFB): 269ms
- 待機時間(TTFB):255ミリ秒
- 待機時間(TTFB):253ms
サーバー2:
- 待機時間 (TTFB): 379ms
- 待機時間(TTFB):376ms
- 待機時間 (TTFB): 369ms
サーバー3:
- 待機時間(TTFB):374ms
- 待機時間 (TTFB): 381ms
- 待機時間 (TTFB): 378ms
ご覧のとおり、サーバー 1 の TTFB は大幅に低くなっています。CPU に関しては、サーバー 2 と 3 の方が実際には高速です。
PHP ベンチマーク スクリプト
サーバー1 合計時間: : 4.022 秒。
サーバー2 合計時間: : 2.866 秒。
サーバー3 合計時間: : 2.936 秒。
すべてのサーバーの I/O はほぼ同じです。すべてのサーバーに、ハードウェア RAID コントローラーを備えた新しい SSD が搭載されています。
追加の遅延が Redis から発生しているかどうかを確認するために、Redis を VM の 1 つに移動してテストしましたが、違いはまったくありませんでした。
私の推測では、TTFB の余分なレイテンシは、サーバー 1 で実行されている MySQL から生じているのでしょうか? 同じサーバーで MySQL を実行すると、CPU が遅くなっても、TTFB は大幅に小さくなります。
これを回避する方法はありますか?
実際、適切な質問は、余分な遅延の原因をどのように特定できるかということです。