Score:0

mysql ช้ามากบน Azure App Service พร้อม PHP (Wordpress)

ธง cn

ฉันกำลังพยายามแก้ไขปัญหาเกี่ยวกับการเชื่อมต่อ 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 ใหม่ทั้งหมด

Doug avatar
in flag
ฉันยังพบสิ่งนี้ที่พยายามรวมแอป PHP (Moodle) กับฐานข้อมูลส่วนหลังหลายตัว (Postgres, Maria, MySQL) โดยมีและไม่มีแคช Redis ประสิทธิภาพของฐานข้อมูลดีมาก แต่ Moodle ใช้งานไม่ได้ ข้อสรุปของฉันในเวลานั้นคือ PHP เข้าถึงไฟล์นับพันสำหรับแต่ละคำขอของ Moodle และบริการแอปทำงานได้ไม่ดีภายใต้เงื่อนไขดังกล่าว ย้ายไปยัง VM ขนาดเล็กและมีประสิทธิภาพไร้ที่ติ ดังนั้นละทิ้งเส้นทางบริการแอพ ไม่มีปัญหากับเว็บแอปอื่นๆ อย่างแน่นอน แต่แพลตฟอร์ม PHP ขนาดใหญ่อย่าง Moodle (และดูเหมือนว่าจะเป็น WP) ดูเหมือนจะก่อให้เกิดปัญหาคอขวดในการจัดเก็บไฟล์
cn flag
@pp_1 บริการแอปโฮสต์ในภูมิภาคใด
cn flag
@czerspalace ฉันได้ทดสอบ West, North Europe และ Central, West US
Score:0
ธง ph

มีปัญหาเดียวกันที่นี่ ฉันได้ทำการทดสอบการเชื่อมต่อกับอินสแตนซ์คอนเทนเนอร์ผ่านเว็บ ssh และสิ่งที่ฉันพบคือมันต้องใช้ php 200-300ms เพียงเพื่อโหลดปลั๊กอิน. ดังนั้นข้อสรุปสุดท้ายของฉันคือ Azure มีปัญหากับ php

ฉันอยากรู้มากเพื่อดูว่าใครมีประสิทธิภาพที่ดีบน Azure โดยไม่ต้องแคช (ด้วย php บน linux)

เราลงเอยด้วยการกำหนดค่าแอพด้วยสคริปต์เริ่มต้นที่กำหนดค่า NGIX ใหม่ให้แคชเพจเชิงรุก แม่มดทำงานได้ดีสำหรับบางไซต์ของเรา แต่มันยังห่างไกลจากอุดมคติตอนนี้เรามี TTFB 50 มิลลิวินาทีสำหรับเพจแคช

Score:0
ธง cn

ฉันยังมีปัญหาเดียวกัน Azure ช้ามากและไม่มีอะไรทำงาน?

PP_1 คุณหมายถึงอะไรในการเปิดใช้งานแคช คุณหมายถึงปลั๊กอินเช่น WP Rocket หรือไม่

cn flag
ใช่ โดยแคช ฉันหมายถึงปลั๊กอินอย่าง WP Rocket
Score:0
ธง gb

สองสามสิ่งที่ต้องดูเนื่องจากไม่ได้กล่าวถึงในคำถาม

  1. ตรวจสอบให้แน่ใจว่าเว็บแอปและฐานข้อมูลอยู่ในภูมิภาคเดียวกัน นี่อาจดูธรรมดาแต่ฉันเคยเห็นมาก่อน
  2. เปิดใช้งาน เปิดอยู่เสมอ ในการตั้งค่าสำหรับ Azure App Service เปิดอยู่เสมอ: โหลดแอพไว้แม้ในขณะที่ไม่มีการจราจร เมื่อไม่ได้เปิดใช้ Always On (ค่าเริ่มต้น) แอปจะยกเลิกการโหลดหลังจากผ่านไป 20 นาทีโดยไม่มีคำขอใดๆ เข้ามา แอปที่ไม่ได้โหลดอาจทำให้มีเวลาแฝงสูงสำหรับคำขอใหม่ เนื่องจากเวลาในการอุ่นเครื่อง เมื่อไร เปิดอยู่เสมอ เปิดอยู่ ตัวโหลดบาลานเซอร์ส่วนหน้าจะส่งคำขอ GET ไปยังรูทแอปพลิเคชันทุก ๆ ห้านาทีการ ping อย่างต่อเนื่องทำให้ไม่สามารถยกเลิกการโหลดแอปได้
  3. ทบทวน แนวทางปฏิบัติที่ดีที่สุดสำหรับบริการแอพ.
cn flag
ขอขอบคุณ.ฐานข้อมูลและแอปอยู่ในภูมิภาคเดียวกัน และฉันได้ทดสอบ AZ เดียวกันด้วย เปิดใช้งานเสมอเป็นค่าเริ่มต้นเมื่อคุณสร้างแอปผ่านพอร์ทัล

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา