ไดเรกทอรีบทความ
Monit ตรวจสอบหน้าเว็บแบบไดนามิก: อาวุธลับสำหรับการรีสตาร์ท PHP 8.5-FPM โดยอัตโนมัติ
ใครจะไปคิดว่ารหัสสถานะง่ายๆ จะสามารถระบุได้ว่าเว็บไซต์ของคุณทำงานได้อย่างเสถียรหรือล่มทันที?
นี่คือความเป็นจริงที่โหดร้ายของการดำเนินงานและการบำรุงรักษา
เมื่อหน้าเว็บแบบไดนามิกไม่ส่งคืนรหัสสถานะ 200 Monit จะทำหน้าที่เหมือนกรรมการที่ไร้ความรู้สึก โดยจะลงโทษทันทีด้วยการรีสตาร์ท PHP8.5-FPM โดยไม่ปรานี
เหตุใดจึงต้องจับตาดูรหัสสถานะ 200 อย่างใกล้ชิด?
รหัสสถานะ HTTP เปรียบเสมือนคลื่นไฟฟ้าหัวใจของเว็บไซต์
รหัสสถานะ 200 หมายความว่าทุกอย่างเป็นปกติ และเซิร์ฟเวอร์และแอปพลิเคชันทำงานได้อย่างราบรื่น
อย่างไรก็ตาม หากได้รับรหัสข้อผิดพลาด 500, 502 หรือ 404 แสดงว่าระบบพบข้อผิดพลาด
หากไม่แก้ไขความผิดปกตินี้โดยทันที อาจทำให้เว็บไซต์ล่มทั้งหมด และประสบการณ์การใช้งานของผู้ใช้จะพังทลายลงในทันที
ตรรกะการตรวจสอบของ Monit

ไฟล์การตั้งค่าของ Monit เปรียบเสมือนแผนการผ่าตัดที่ละเอียดถี่ถ้วน
นอกจากจะสามารถตรวจสอบไฟล์ PID ของกระบวนการได้แล้ว ยังสามารถตรวจสอบได้ว่าบริการทำงานได้อย่างถูกต้องหรือไม่ผ่านทาง Unix Socket อีกด้วย
ที่สำคัญกว่านั้นคือ สามารถเริ่มต้นการร้องขอ HTTP ได้โดยตรงและตรวจจับสถานะการตอบกลับของหน้าเว็บแบบไดนามิกได้
check process php8.5-fpm with pidfile /run/php/php8.5-fpm.pid
start program = "/usr/bin/systemctl start php8.5-fpm"
stop program = "/usr/bin/systemctl stop php8.5-fpm"
if failed unixsocket /run/php/php8.5-fpm-chenweiliang.com.sock then restart
# 新增HTTP状态联动
if failed
host www.chenweiliang.com
port 443
protocol https
request "/wp-login.php?wp-admin-d3ng=12"
status = 200
for 3 cycles
then restart
# 防雪崩机制
if 5 restarts within 5 cycles then exec "/usr/bin/systemctl restart hestia"ความสำคัญของการตรวจจับหน้าเว็บแบบไดนามิก
หลายคนติดตามดูเฉพาะหน้าแรกแบบคงที่เท่านั้น
อย่างไรก็ตาม หน้าเว็บแบบไดนามิกมักเป็นหน้าเว็บที่มีปัญหาเกิดขึ้นได้ง่ายที่สุด เช่น...WordPress的wp-login.php.
เนื่องจากกระบวนการนี้เกี่ยวข้องกับการสืบค้นฐานข้อมูล การเรียกใช้สคริปต์ PHP และการเรียกใช้แคช หากส่วนใดส่วนหนึ่งเกิดขัดข้อง หน้าเว็บทั้งหมดจะแสดงสถานะที่ไม่ใช่ 200
ด้วยการตรวจสอบหน้านี้ Monit สามารถตรวจสอบได้อย่างแม่นยำว่า PHP-FPM ทำงานได้อย่างถูกต้องหรือไม่
ภูมิปัญญาของกลไกการป้องกันหิมะถล่ม
หาก PHP-FPM รีสตาร์ทบ่อยครั้ง แสดงว่าปัญหาไม่ได้เกิดจากกระบวนการใดกระบวนการหนึ่ง แต่เป็นปัญหาในระดับระบบ
ณ จุดนี้ Monit จะกระตุ้นกลไกป้องกันการเกิดเหตุการณ์ถล่มทลายและรีสตาร์ทแผงควบคุม Hestia โดยตรง
การออกแบบนี้คล้ายกับการติดตั้งระบบเบรกฉุกเฉินบนทางหลวงเพื่อป้องกันอุบัติเหตุต่อเนื่อง
เหตุใดจึงควรเลือก PHP8.5-FPM?
ปัจจุบัน PHP 8.5 เป็นเวอร์ชันที่ให้ความสมดุลระหว่างประสิทธิภาพและความเสถียร
มันมีประสิทธิภาพมากกว่า PHP7 ประมาณ 30% ในการจัดการคำขอพร้อมกันจำนวนมาก
ในขณะเดียวกัน โหมด FPM สามารถจัดการกลุ่มกระบวนการได้ดีขึ้นและหลีกเลี่ยงการสิ้นเปลืองทรัพยากร
ตามเอกสารอย่างเป็นทางการของ PHP แล้ว FPM เป็นวิธีการทำงานที่แนะนำในสภาพแวดล้อมการผลิต โดยเฉพาะอย่างยิ่งเหมาะสำหรับเฟรมเวิร์กเช่น WordPress และ Laravel
เหมือนกับ "ลินุกซ์หนังสือ "แนวปฏิบัติที่ดีที่สุดในการดำเนินงานและการบำรุงรักษา" กล่าวถึง:
"การตรวจสอบบริการไม่ควรจำกัดอยู่แค่การตรวจสอบว่ากระบวนการทำงานยังคงดำเนินต่อไปได้หรือไม่ แต่ควรเน้นไปที่สถานะการตอบสนองของเลเยอร์แอปพลิเคชันด้วย"
ข้อความนี้อธิบายว่าเหตุใด Monit จึงตรวจสอบรหัสสถานะ HTTP ไม่ใช่แค่ไฟล์ PID เท่านั้น
ผลกระทบในการต่อสู้จริง
ในการทดสอบจริง เมื่อwp-login.phpเมื่อได้รับข้อผิดพลาด 502 Monit จะตรวจพบความผิดปกติภายใน 3 รอบการทำงานและรีสตาร์ท PHP8.5-FPM ทันที
กระบวนการทั้งหมดใช้เวลาน้อยกว่า 10 วินาที และผู้ใช้แทบจะไม่รู้สึกถึงการหยุดชะงักใดๆ
หากข้อผิดพลาดยังคงเกิดขึ้น กลไกป้องกันการเกิดข้อผิดพลาดซ้ำซ้อนจะทำงาน และ Hestia จะถูกรีสตาร์ทเพื่อให้แน่ใจว่าสภาพแวดล้อมทั้งหมดกลับคืนสู่สภาพเดิม
สรุป: ของฉันการดำเนินงานและการบำรุงรักษาปรัชญา
การเฝ้าติดตามไม่ใช่เพื่อแสดงทักษะ แต่เพื่อให้ระบบสามารถแก้ไขตัวเองได้แม้ในสถานการณ์ที่เลวร้ายที่สุด
การตั้งค่าของ Monit ทำหน้าที่เหมือนกลไกป้องกันอัตโนมัติ ช่วยให้เว็บไซต์ทำงานได้อย่างปลอดภัยแม้ในที่มืด
ในความคิดของผม การกำหนดค่าของ Monit ไม่ได้เป็นเพียงความชาญฉลาดทางเทคนิคเท่านั้น แต่ยังเป็นปรัชญาในการดำเนินงานอีกด้วย
สิ่งนี้สอนเราว่าเสถียรภาพที่แท้จริงไม่ได้มาจากการที่ผู้คนจ้องมองหน้าจอ แต่มาจากการที่ระบบซ่อมแซมตัวเองได้
มันก็เหมือนกับระบบสัญญาณไฟจราจรแบบอัตโนมัติของเมือง ที่สามารถรักษาระเบียบท่ามกลางความวุ่นวายได้
ดังนั้น การเชี่ยวชาญในการตั้งค่านี้จึงหมายถึงการเชี่ยวชาญในการริเริ่มเพื่อให้มั่นใจถึงเสถียรภาพของเว็บไซต์
ความมั่นคงไม่ได้เกิดขึ้นโดยบังเอิญ แต่เป็นความจำเป็นที่เกิดจากปัญญา
หากเว็บไซต์ของคุณยังคงพึ่งพาการแก้ไขปัญหาด้วยตนเองอยู่ ลองใช้เครื่องมือตรวจสอบสถานะ HTTP ของ Monit ดูสิ
มีเพียงการปล่อยให้ระบบเรียนรู้ที่จะ "หายใจ" ด้วยตัวเองเท่านั้น คุณจึงจะสามารถปลดปล่อยมือของคุณได้อย่างแท้จริง
หวังว่า บทความ "Monit ตรวจสอบหน้าเว็บแบบไดนามิกและรีสตาร์ท php8.5-fpm โดยอัตโนมัติเมื่อตรวจพบรหัสสถานะที่ไม่ใช่ 200" ที่แชร์บนบล็อกของ Chen Weiliang ( https://www.chenweiliang.com/ ) จะเป็นประโยชน์กับคุณ
โปรดแชร์ลิงก์บทความนี้ได้ตามสบาย: https://www.chenweiliang.com/cwl-32764.html
