
우리는 암스테르담에 Leaseweb이라는 자체 랙을 가지고 있습니다.
우리는 Windows 2019 IIS 서버 3대를 사용하여 Cloudflare를 통해 HTTP 부하 분산을 수행합니다.
- 서버 1: 베어메탈 슈퍼마이크로 서버. IIS, MySQL8 및 Redis를 실행합니다.
- 서버 2: Dell 서버의 VM입니다. IIS를 실행합니다.
- 서버 3: Dell 서버의 VM(server2의 정확한 복사본) 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
보시다시피 서버 1의 TTFB는 상당히 낮습니다. CPU 측면에서 보면 서버 2와 3이 실제로 더 빠릅니다.
PHP 벤치마크 스크립트
Server1 총 시간: : 4.022초
Server2 총 시간: : 2.866초
Server3 총 시간: : 2.936초
I/O는 모든 서버에서 거의 동일합니다. 그들은 모두 하드웨어 RAID 컨트롤러를 갖춘 새로운 SSD를 가지고 있습니다.
추가 대기 시간이 Redis에서 발생하는지 알아내기 위해 Redis를 VM 중 하나로 이동하는 테스트를 수행했지만 약간의 차이는 없습니다.
내 가정은 TTFB의 추가 대기 시간이 서버 1에서 실행되는 MySQL에서 비롯된다는 것입니다. 동일한 서버에서 MySQL을 실행하면 CPU 속도가 느려지더라도 TTFB가 훨씬 작아집니다.
이에 대한 해결 방법이 있나요?
실제로 적절한 질문은 추가 대기 시간의 원인이 무엇인지 어떻게 식별할 수 있는가입니다.