Score:0

เซิร์ฟเวอร์ OpenLiteSpeed ​​บน EC2 หมดเวลาบนเว็บไซต์อีคอมเมิร์ซขนาดเล็ก

ธง ph

หวังว่าคุณจะสบายดี - ฉันใช้ไซต์ Wordpress กับ Woocommerce บนเว็บเซิร์ฟเวอร์ OpenLiteSpeed ​​ซึ่งภายใต้การใช้งาน PHP อย่างหนักเริ่มแสดงข้อผิดพลาด Timed-out 504ฉันโฮสต์ทุกอย่างใน AWS และฉันมีปัญหาในการระบุสาเหตุของข้อผิดพลาด 504 และสิ่งที่ควรปรับปรุงเพื่อหลีกเลี่ยงข้อผิดพลาด นี่คือรายละเอียดบางส่วน:

การตั้งค่า AWS:

  • เว็บเซิร์ฟเวอร์ได้รับการติดตั้งในอินสแตนซ์ t3.medium พร้อม Ubuntu 20.04 amd64 และพื้นที่จัดเก็บ EBS ขนาด 50Gb (เปิดใช้งานการเพิ่มประสิทธิภาพ I/O) ปัจจุบันมีการใช้งานประมาณ 10Gb
  • ใช้ PHP 7.4 และ
  • ฉันใช้การแจกแจง CloudFront สองรายการสำหรับ CDN: หนึ่งรายการไปยังเซิร์ฟเวอร์อิมเมจ (ใน S3) และอีกรายการหนึ่งไปยังไฟล์ CSS/JS ของเซิร์ฟเวอร์
  • ฉันมี ELB เพื่อจัดการการรับส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์ หมดเวลาเมื่อไม่ได้ใช้งานถูกตั้งค่าเป็น 300 วินาที
  • ฉันมีอินสแตนซ์ RDS db.t3.small (100Gb gp2) ที่เรียกใช้ Mariadb 10.5.13 ขนาดฐานข้อมูลประมาณ 1.5gGb
  • ฉันใช้ Redis ElastiCache กับโหนด cache.t3.micro สามโหนด

สถิติของเว็บไซต์:

  • ไซต์มีผู้เข้าชมประมาณ 1,000 ครั้งต่อสัปดาห์
  • ประมาณ 350 หน้าผลิตภัณฑ์และ 50 หน้า
  • ขนาดหน้ามีตั้งแต่ 500kb ถึง 13.5Mb

มีปัญหาอะไร?

  • ไซต์หมดเวลาและแสดงข้อผิดพลาด 504 เมื่อใช้ฟังก์ชัน PHP จำนวนมาก เช่น การอัปโหลดผลิตภัณฑ์ (และการแนบรูปภาพกับผลิตภัณฑ์เหล่านั้น) การอัปโหลดรูปภาพ โดยการล้างแคช OLS หลายครั้ง (ประมาณ 3-4 ครั้ง) ในช่วงเวลาสั้นๆ หรือการนำทางผ่าน ไซต์เปิดหน้าผลิตภัณฑ์จำนวนมากและเพิ่มลงในรถเข็น
  • EC2 CPUUtilization แสดงจุดสูงสุดสูงสุดที่ 99% แต่แบนด์วิดท์ของเครือข่ายดูเหมือนจะโอเคถึงจุดสูงสุดสูงสุดที่ 2.0Gb และเครดิต CPU ยังคงที่
  • การเชื่อมต่อ Db สูงสุดที่ 50 ต่อนาที และการใช้งาน CPU ผันผวนระหว่าง 20% ถึง 30%
  • เครดิตระเบิดยังคงที่
  • stderr.log แสดง "ถึงขีดจำกัดสูงสุดของกระบวนการลูก: 35, เกิน: 0, ปัจจุบัน: 35, ไม่ว่าง: 35, โปรดเพิ่ม LSAPI_CHILDREN"

ภาพหน้าจอ (อินสแตนซ์ EC2):

การใช้งาน CPU%

เน็ตอิน+เน็ตเอาท์

ยอดเครดิต CPU

สิ่งที่ฉันพยายามจนถึงตอนนี้:

  • ฉันพยายามเพิ่มการเชื่อมต่อสูงสุดและการประมวลผลลูกเป็น 350 แต่ปัญหาการหมดเวลายังคงอยู่
  • ฉันเพิ่มขีด จำกัด หน่วยความจำ php.ini เป็น 512mb แต่ไม่ได้สร้างความแตกต่าง
  • พยายามเพิ่มที่เก็บข้อมูล db จาก 30Gb เป็น 100Gb ไม่มีโชค
  • พยายามเพิ่มที่เก็บข้อมูลอินสแตนซ์ EC2 จาก 30Gb เป็น 50Gb แต่ก็โชคไม่ดีอีก

คำถาม/ความช่วยเหลือที่จำเป็น:

  • จากการตั้งค่าของฉัน ฉันควรค้นหาเมตริกใด (และการรวม) เพื่อระบุสาเหตุการหมดเวลา AWS มีข้อมูลมากมายจนฉันสับสนว่าสิ่งใดสามารถขับเคลื่อนเข็มได้
  • ฉันควรขยายอินสแตนซ์ EC2 ของฉันเพื่อให้ใช้พลังงาน CPU มากขึ้นหรือไม่ 0r ฉันควรขยายขนาดอินสแตนซ์ RDS ของฉันหรือไม่ หรือไม่มี? ฉันมีงบประมาณจำกัด ดังนั้นตัวเลือกนี้จึงเป็นไปไม่ได้จริงๆ
  • มีการกำหนดค่าใด ๆ ที่เว็บเซิร์ฟเวอร์ที่ฉันสามารถลองได้หรือไม่? ฉันสามารถอัปโหลดไฟล์ conf ของฉันได้หากสิ่งนั้นช่วยได้
  • ฉันควรย้ายทุกอย่างไปที่โฮสติ้งที่มีการจัดการและใช้ชีวิตอย่างมีความสุขตลอดไปหรือไม่?

ขอบคุณล่วงหน้า

jp flag
สำหรับเซิร์ฟเวอร์ 2 CPU 4 GB RAM การล้างแคชไม่ควรทำให้เกิดปัญหาการหมดเวลาของ PHP บางทีคุณสามารถส่งตั๋วไปที่ [email protected] เพื่อขอความช่วยเหลือเพิ่มเติม
Tim avatar
gp flag
Tim
1,000 ครั้งต่อสัปดาห์คือ 1 คำขอทุกๆ _10 นาที ซึ่งไม่ได้ใช้งาน คุณมีฮาร์ดแวร์จำนวนมหาศาลสำหรับการโหลดเพียงเล็กน้อย หรือโหลดของคุณสูงขึ้น? คุณใช้ 2GB ต่อนาทีอย่างไร นั่นคือ 86TB/เดือน ซึ่งมากสำหรับการเข้าชม 1,000 ครั้งต่อชั่วโมง ไม่มีทางที่ CPU ของคุณควรจะอยู่ที่ 100% ให้มองว่าเป็นปัญหาหลักของคุณ - ใช้ยูทิลิตี้ "บนสุด" ของ Linux เป็นจุดเริ่มต้น อินสแตนซ์ของคุณจะไม่มีเครดิต CPU เนื่องจาก CPU ถูกตรึงไว้ที่ 100% ซึ่งทำงานบนพื้นฐานซึ่งเป็น 20% ของคอร์ ซึ่งอาจทำให้ PHP หมดเวลา ฉันคิดว่าคุณต้องตรวจสอบคำถามของคุณเพื่อความถูกต้อง
ph flag
@Eric ขอบคุณจะทำ
ph flag
@Tim ขอบคุณสำหรับข้อมูลของคุณ ฉันแก้ไขคำถามเพื่อชี้แจงว่าฉันหมายถึงจุดสูงสุดสูงสุด ไม่ใช่ค่าเฉลี่ยต่อนาที เครดิต CPU ดูไม่เปลี่ยนแปลง ฉันได้เพิ่มลิงก์ไปยังกราฟ CPUUtilization, NetIn+NetOut และเครดิตยอดเครดิต CPU สำหรับอินสแตนซ์
Tim avatar
gp flag
Tim
นั่นดีกว่า. คุณแน่ใจหรือว่ามีเพียง 1,000 คำขอต่อสัปดาห์ นั่นต่ำมากสำหรับการใช้งาน CPU นั้น โปรดเปิดบันทึกการเข้าถึง / ข้อผิดพลาดของ PHP และทำให้ปัญหาเกิดขึ้นอีกครั้ง แก้ไขคำถามของคุณเพื่อรวมบันทึกการเข้าถึงเว็บเซิร์ฟเวอร์ บันทึกการเข้าถึง / ข้อผิดพลาดของ PHP และบันทึกข้อผิดพลาดของเว็บเซิร์ฟเวอร์สำหรับคำขอเดียวนั้น ควรทำอย่างนั้นสำหรับคำขอที่แตกต่างกันเล็กน้อย ฉันสงสัยว่าปัญหาอยู่ใน PHP ซึ่งใช้ CPU มาก แต่ระดับ CPU ของคุณดีและเครดิต CPU ดี
Tim avatar
gp flag
Tim
ขั้นตอนการวินิจฉัยที่เป็นไปได้อีกขั้นตอนหนึ่งคือการหยุดอินสแตนซ์ของคุณ เปลี่ยนเป็นประเภทอินสแตนซ์ขนาดใหญ่เป็นเวลา 15 นาที (m5.4xlarge หรือบางอย่าง) ลองสร้างปัญหาขึ้นใหม่ หยุดและเปลี่ยนกลับ ทำได้ดียิ่งขึ้นด้วยอินสแตนซ์ที่สองที่กู้คืนจากสแน็ปช็อต ดังนั้นไซต์ของคุณจะไม่ล่มหากคุณสามารถจัดการได้ และใช้อินสแตนซ์เฉพาะจุดเพื่อลดค่าใช้จ่าย

โพสต์คำตอบ

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