ฉันกำลังพยายามแก้ไขปัญหาเกี่ยวกับการเชื่อมต่อ Azure App Services กับ Azure Database ที่ช้ามาก
หลังจากการย้าย Wordpress จากโฮสติ้ง OVH ราคาถูก ฉันสังเกตเห็น TTFB ที่ยาวมาก: เพิ่มจาก 300-400ms เป็น 1500-3000ms
ฉันจำกัดปัญหาให้แคบลงเฉพาะบริการแอป - ปัญหาการเชื่อมต่อฐานข้อมูล เพื่อระบุปัญหา ฉันได้สร้างการติดตั้ง Wordpress ใหม่ทั้งหมด
ตาม P3 - Plugin Performance Profiler การติดตั้ง WP ใหม่ทั้งหมดจะสร้างการสืบค้นฐานข้อมูล 38 รายการ
ด้วยปลั๊กอินสถิติประสิทธิภาพของ PHP / MySQL CPU ฉันรันการทดสอบ MySql:
- Azure App Service: 20-50 db แบบสอบถาม / วินาที
- โฮสติ้ง OVH ราคาถูก: ข้อความค้นหา 200+ db / วินาที
ฉันคิดว่าปัญหาค่อนข้างชัดเจนหาก Azure stack 200 USD/mo ช้ากว่า 10 USD OVH ประมาณ 20 เท่า (อย่างไรก็ตาม: ฉันพบว่าแม้แต่การสืบค้น ~ 40 db ต่อวินาทีก็อาจส่งผลให้ TTFB ประมาณ 300ms ซึ่งฉันตั้งเป้าไว้ ).
เพื่อแก้ไขปัญหานี้ ฉันได้ลองทดสอบ/เปลี่ยนแปลงต่อไปนี้:
- App Service Plans ที่แตกต่างกัน (ตั้งแต่ dev ถึง P2v3)
- เซิร์ฟเวอร์ฐานข้อมูล Azure ที่แตกต่างกัน (จากที่ถูกที่สุดถึง ~300 usd/mo)
- PHP 7.4 และ PHP 8.0
- Apache และ nginx (มาโดยอัตโนมัติพร้อมการเปลี่ยนแปลง php 7/8)
- เซิร์ฟเวอร์ Azure Database แบบเดี่ยวและแบบยืดหยุ่น
- ฐานข้อมูล Azure สำหรับ MySQL และ MariaDB
- บริการแอพไปยังการเชื่อมต่อฐานข้อมูลผ่าน IP สาธารณะและผ่านการรวม vnet
- การวางฐานข้อมูลในโซนความพร้อมใช้งานเดียวกันทุกประการ
- การเชื่อมต่อแอป/ฐานข้อมูล ssl และไม่ใช่ ssl
- การเปลี่ยนเส้นทางฐานข้อมูลด้วย mysqlnd_azure
- พยายามคงอยู่ของการเชื่อมต่อ
- Wordpress ในคอนเทนเนอร์นักเทียบท่า App Service
ไม่มีข้อใดกล่าวข้างต้น ทำการเปลี่ยนแปลงที่สำคัญในประสิทธิภาพ
"แก้ไข" เพียงอย่างเดียวที่ "ใช้งานได้" คือการเปิดใช้งานแคช หากมีการเข้าชมแคช TTFB จะอยู่ที่ประมาณ 100 ms ตามที่คาดไว้
ฉันยังได้เปรียบเทียบ AWS Elastic Beanstalk/RDS และ Google App Engine/CloudSQL และทำงานได้อย่างสมบูรณ์แบบ (~250 ms TTFB นอกกรอบ) Azure VM (PHP+ Apache) ที่เชื่อมต่อกับฐานข้อมูล Azure เดียวกันทำงานได้ดี (<300ms TTFB)
ฉันไม่มีความคิด ฉันพลาดอะไรไป
เพื่อให้ชัดเจน: ฉันไม่ได้พยายามบรรลุเวลาตอบสนองหลักเดียวหรือประสิทธิภาพสูงสุด - 300ms จะยอมรับได้สำหรับการติดตั้ง WP ใหม่ทั้งหมด