Monit ตรวจสอบหน้าไดนามิกของเว็บไซต์และตรวจพบว่ารหัสสถานะไม่ใช่ 200 และรีสตาร์ท php8.5-fpm โดยอัตโนมัติ

Monit ตรวจสอบหน้าเว็บแบบไดนามิก: อาวุธลับสำหรับการรีสตาร์ท PHP 8.5-FPM โดยอัตโนมัติ

ใครจะไปคิดว่ารหัสสถานะง่ายๆ จะสามารถระบุได้ว่าเว็บไซต์ของคุณทำงานได้อย่างเสถียรหรือล่มทันที?

นี่คือความเป็นจริงที่โหดร้ายของการดำเนินงานและการบำรุงรักษา

เมื่อหน้าเว็บแบบไดนามิกไม่ส่งคืนรหัสสถานะ 200 Monit จะทำหน้าที่เหมือนกรรมการที่ไร้ความรู้สึก โดยจะลงโทษทันทีด้วยการรีสตาร์ท PHP8.5-FPM โดยไม่ปรานี

เหตุใดจึงต้องจับตาดูรหัสสถานะ 200 อย่างใกล้ชิด?

รหัสสถานะ HTTP เปรียบเสมือนคลื่นไฟฟ้าหัวใจของเว็บไซต์

รหัสสถานะ 200 หมายความว่าทุกอย่างเป็นปกติ และเซิร์ฟเวอร์และแอปพลิเคชันทำงานได้อย่างราบรื่น

อย่างไรก็ตาม หากได้รับรหัสข้อผิดพลาด 500, 502 หรือ 404 แสดงว่าระบบพบข้อผิดพลาด

หากไม่แก้ไขความผิดปกตินี้โดยทันที อาจทำให้เว็บไซต์ล่มทั้งหมด และประสบการณ์การใช้งานของผู้ใช้จะพังทลายลงในทันที

ตรรกะการตรวจสอบของ Monit

Monit ตรวจสอบหน้าไดนามิกของเว็บไซต์และตรวจพบว่ารหัสสถานะไม่ใช่ 200 และรีสตาร์ท php8.5-fpm โดยอัตโนมัติ

ไฟล์การตั้งค่าของ 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

หากต้องการปลดล็อคเคล็ดลับที่ซ่อนอยู่เพิ่มเติม ยินดีต้อนรับเข้าร่วมช่อง Telegram ของเรา!

แชร์และกดไลค์ถ้าคุณชอบ! การแชร์และการถูกใจของคุณคือแรงบันดาลใจอย่างต่อเนื่องของเรา!

 

发表评论

您的邮箱地址不会被公ปริญญา。必填项已用*标注

เลื่อนไปที่ด้านบน