ไดเรกทอรีบทความ
เว็บไซต์ของคุณทำงานช้าลง ไม่ใช่เพราะมีปริมาณการเข้าชมมากเกินไป แต่เป็นเพราะระบบแบ็กเอนด์ของ Memcached อาจไม่ได้ทำงานเลย!
ส่วนที่น่าหงุดหงิดที่สุดคือ คุณอัปเกรดเป็น PHP 8.4 แล้ว แต่เซิร์ฟเวอร์ Memcached กลับไม่ตอบสนอง และหน้าเว็บโหลดช้ามาก สาเหตุที่แท้จริงนั้นค่อนข้างง่าย นั่นคือ ความไม่ตรงกันของนามสกุลไฟล์ คีย์หมดอายุ และลำดับการพึ่งพาที่ไม่ถูกต้อง ด้านล่างนี้ ผมจะอธิบายวิธีแก้ปัญหาทั้งหมดอย่างละเอียด เพื่อให้คุณสามารถแก้ไขได้ในครั้งเดียว
ต้นตอของปัญหา
หลังจากอัปเกรด PHP เป็นเวอร์ชัน 8.4 แล้ว หากส่วนขยาย Memcached ไม่รองรับการอัปเดตดังกล่าว ระบบจะแสดงข้อผิดพลาดทันที
หลายคนมองข้ามไป packages.sury.org ปัญหาเกิดจากคีย์ GPG หมดอายุ ทำให้ไม่สามารถดาวน์โหลดแพ็กเกจการติดตั้งได้
ที่แย่ไปกว่านั้น Memcached ยังต้องพึ่งพา... igbinary และ msgpackต้องปฏิบัติตามลำดับการโหลดอย่างเคร่งครัด มิเช่นนั้นก็เหมือนกับการวางชิ้นส่วนจิ๊กซอว์ผิดที่ ซึ่งจะทำให้ระบบทั้งหมดล่ม

อัปเดตคีย์ GPG
ขั้นตอนแรกคือการซ่อมแซมคีย์ต้นทาง
curl -sSL https://packages.sury.org/php/README.txt | bash -x
apt update
ขั้นตอนนี้นับเป็นการออกบัตรผ่านใหม่ให้กับระบบ หากไม่มีขั้นตอนนี้ การติดตั้งครั้งต่อๆ ไปจะถูกปฏิเสธ
ตามเอกสารอย่างเป็นทางการของ Debian การหมดอายุของคีย์เป็นปัญหาที่พบได้บ่อยและต้องอัปเดตเป็นประจำ
ติดตั้งส่วนขยาย Memcached สำหรับ PHP 8.4
ขั้นตอนต่อไปคือการติดตั้งส่วนขยาย
apt install -y php8.4-memcached
โปรดทราบว่าเวอร์ชันต้องตรงกับ PHP 8.4 อย่างแน่นอน มิเช่นนั้นจะเกิดข้อผิดพลาด "undefined symbol"
ตามเอกสารอย่างเป็นทางการของไลบรารีส่วนขยาย PHP ระบุว่า Memcached จำเป็นต้องคอมไพล์ใหม่ในเวอร์ชัน 8.x เพื่อให้สามารถใช้งานร่วมกันได้
การจัดการข้อความแจ้งเตือนไฟล์การกำหนดค่า
จะมีหน้าต่างป๊อปอัพปรากฏขึ้นระหว่างขั้นตอนการติดตั้ง memcached.ini ข้อความแจ้งการเลือก
อย่าแก้ไขอะไรตรงนี้ แค่กด Enter แล้วเลือกค่าเริ่มต้นก็พอ Nคงการตั้งค่าเดิมไว้
นี้เป็นเพราะ เฮสเทียซีพี โปรแกรมมีไฟล์การตั้งค่าของตัวเองอยู่แล้ว การบังคับเขียนทับไฟล์ดังกล่าวจะทำให้แผงควบคุมแสดงข้อผิดพลาดเท่านั้น
แก้ไขลำดับการโหลดส่วนขยายการพึ่งพา
นี่เป็นขั้นตอนที่สำคัญมาก
phpdismod -v 8.4 memcached
phpdismod -v 8.4 msgpack
phpdismod -v 8.4 igbinary
phpenmod -v 8.4 igbinary
phpenmod -v 8.4 msgpack
phpenmod -v 8.4 memcached
ลำดับที่ถูกต้องต้องเป็นดังนี้:igbinary → msgpack → memcached.
หากลำดับไม่ถูกต้อง Memcached จะรายงานข้อผิดพลาด "ไม่สามารถโหลดโมดูลได้" โดยตรง
เรื่องนี้ได้รับการยืนยันจากนักพัฒนาซอฟต์แวร์จำนวนนับไม่ถ้วนบน Stack Overflow แล้ว
เริ่มบริการใหม่
ขั้นตอนสุดท้ายคือการเริ่มต้นใหม่
systemctl restart php8.4-fpm
systemctl restart memcached
ขั้นตอนนี้เปรียบเสมือนการกดปุ่มรีเฟรชบนระบบ หลังจากนั้นการตั้งค่าทั้งหมดจึงจะมีผลอย่างแท้จริง
ตรวจสอบว่าการติดตั้งสำเร็จหรือไม่
执行:
php8.4 -m | grep memcached
หากผลลัพธ์ประกอบด้วย memcachedนี่แสดงว่าได้โหลดส่วนขยายสำเร็จแล้ว
หมายความว่าแผงควบคุม HestiaCP ของคุณกลับมาใช้งานแคชได้อีกครั้งแล้ว และประสิทธิภาพของเว็บไซต์จะดีขึ้นทันที
สรุป: มุมมองของฉัน
ปัญหาทางเทคนิคไม่ใช่สิ่งที่น่ากลัวที่สุด สิ่งที่น่ากลัวอย่างแท้จริงคือการไม่รู้ว่าปัญหาอยู่ที่ไหน
ปัญหาที่ Memcached ไม่ตอบสนองอาจดูซับซ้อน แต่จริงๆ แล้วสรุปได้เป็นสามประเด็นหลักดังนี้:การจับคู่เวอร์ชัน การอัปเดตคีย์ ลำดับการพึ่งพา.
การแก้ไขปัญหานี้ก็เหมือนกับการซ่อมเครื่องยนต์ที่มีความแม่นยำสูง ตราบใดที่แต่ละชิ้นส่วนอยู่ในตำแหน่งที่ถูกต้อง เครื่องจักรทั้งเครื่องก็จะกลับมาทำงานได้อีกครั้ง
ในยุคที่ข้อมูลข่าวสารล้นหลามเช่นนี้ ประสิทธิภาพของเว็บไซต์จึงเป็นข้อได้เปรียบในการแข่งขัน การแคชข้อมูลไม่ใช่แค่สิ่งที่ควรมี แต่เป็นรากฐานสำคัญที่กำหนดประสบการณ์ของผู้ใช้
อย่าปล่อยให้ข้อผิดพลาดเล็กๆ น้อยๆ ในการตั้งค่ามาทำลายธุรกิจของคุณ ฝึกฝนขั้นตอนเหล่านี้ให้เชี่ยวชาญ แล้วคุณจะสามารถแก้ไขปัญหาได้อย่างสมบูรณ์และทำให้เว็บไซต์ของคุณกลับมาทำงานได้อย่างราบรื่นอีกครั้ง
คุณค่าของเทคโนโลยีไม่ได้อยู่ที่ความซับซ้อน แต่在于ความแม่นยำ ความเชี่ยวชาญที่แท้จริงอยู่ที่การแก้ปัญหาอย่างแม่นยำ
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ บทความเรื่อง "การแก้ไขปัญหาเซิร์ฟเวอร์ Memcached ที่ไม่ตอบสนองใน PHP 8.4 บน HestiaCP" ที่แชร์ไว้ที่นี่ อาจเป็นประโยชน์สำหรับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-33848.html
