เรามีชั้นวางของเราเองในอัมสเตอร์ดัม Leaseweb
เราทำ HTTP load balance (ผ่าน Cloudflare) ด้วยเซิร์ฟเวอร์ Windows 2019 IIS 3 เครื่อง:
- เซิร์ฟเวอร์ 1: เซิร์ฟเวอร์ซุปเปอร์ไมโครโลหะเปลือย เรียกใช้ IIS, MySQL8 และ Redis
- เซิร์ฟเวอร์ 2: VM บนเซิร์ฟเวอร์ Dell เรียกใช้ IIS
- เซิร์ฟเวอร์ 3: VM บนเซิร์ฟเวอร์ Dell (สำเนาถูกต้องของเซิร์ฟเวอร์ 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
เซิร์ฟเวอร์1
เวลาทั้งหมด : : 4.022 วินาที
เซิร์ฟเวอร์2
เวลาทั้งหมด : : 2.866 วินาที
เซิร์ฟเวอร์3
เวลาทั้งหมด : : 2.936 วินาที
I/O นั้นเหมือนกันสำหรับทุกเซิร์ฟเวอร์ พวกเขาทั้งหมดมี SSD ใหม่พร้อมตัวควบคุมการโจมตีด้วยฮาร์ดแวร์
ฉันได้ทดสอบการย้าย Redis ไปยัง VM ตัวใดตัวหนึ่ง เพื่อที่ฉันจะได้ทราบว่าเวลาแฝงที่เพิ่มขึ้นนั้นมาจาก Redis หรือไม่ แต่ก็ไม่ได้สร้างความแตกต่างเลยสักนิด
ข้อสันนิษฐานของฉันคือเวลาแฝงเพิ่มเติมใน TTFB มาจาก MySQL ที่ทำงานบนเซิร์ฟเวอร์ 1 หรือไม่ การเรียกใช้ MySQL บนเซิร์ฟเวอร์เดียวกันทำให้ TTFB มีขนาดเล็กลงอย่างมาก แม้ว่า CPU จะช้ากว่าก็ตาม
มีวิธีแก้ปัญหานี้หรือไม่?
จริงๆ แล้ว คำถามที่ถูกต้องคือ ฉันจะระบุได้อย่างไรว่าสาเหตุของเวลาแฝงเพิ่มเติมคืออะไร