หวังว่าคุณจะสบายดี - ฉันใช้ไซต์ 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 ของฉันได้หากสิ่งนั้นช่วยได้
- ฉันควรย้ายทุกอย่างไปที่โฮสติ้งที่มีการจัดการและใช้ชีวิตอย่างมีความสุขตลอดไปหรือไม่?
ขอบคุณล่วงหน้า