การหลีกเลี่ยงภัยพิบัติ CMS: วิธีป้องกันการหยุดทำงานของเว็บไซต์

เผยแพร่แล้ว: 2022-08-16

แท้จริงแล้วการที่ไซต์ ถูก พิจารณาว่าไม่มีประโยชน์หมายความว่าอย่างไร

บ่อยครั้งขึ้นอยู่กับว่าคุณถามใคร

การพิจารณาเว็บไซต์อาจหมายถึงสิ่งต่าง ๆ หลายประการ:

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

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

ในชุดที่สามของชุดการ หลีกเลี่ยง CMS Disaster เราสำรวจสาเหตุดั้งเดิมของการหยุดทำงานของเว็บไซต์และบทบาทของการตรวจสอบอย่างต่อเนื่องและปัจจัยอื่นๆ ในการหลีกเลี่ยงสิ่งนั้น

ประการแรก บทบาทการตรวจสอบอย่างต่อเนื่องเล่น

เราตรวจสอบแง่มุมต่างๆ ของเว็บไซต์ ดังนั้นเราจึงสามารถบอกได้ว่ามีบางอย่างทำงานไม่ถูกต้องในเลเยอร์ต่างๆ ที่ประกอบกันเป็นแพลตฟอร์ม WordPress VIP ที่มีการจัดการเต็มรูปแบบของเรา ชั้นเหล่านั้นรวมถึง:

  • การเชื่อมต่อเครือข่าย
  • โหลดบาลานเซอร์
  • เว็บเซิร์ฟเวอร์
  • การแคชวัตถุ (Memcached)
  • ฐานข้อมูล
  • Elasticsearch
  • บริการไฟล์ (CDN)

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

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

แคชไม่เพียงพอ

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

คำตอบของ WordPress VIP:

แพลตฟอร์มวีไอพีของ WordPress นำเสนอการแคชหน้าที่มีประสิทธิภาพผ่านเครือข่ายทั่วโลกของเซิร์ฟเวอร์แคชขอบ ซึ่งแต่ละอันใช้เพื่อจัดเก็บและให้บริการเนื้อหาที่ใกล้เคียงที่สุดกับผู้ใช้ปลายทาง เวลาตอบสนองจากเซิร์ฟเวอร์ Edge Cache มักจะเร็วกว่าสิ่งใด ๆ ที่เลี่ยงการแคชหน้าและกระทบกับเซิร์ฟเวอร์ต้นทาง

ความท้าทายในการแคช

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

มักจะพบการประนีประนอมโดยที่หน้าสแตติกให้บริการโดย edge cache ด้วยคุณสมบัติไดนามิก (เช่น สถานะการเข้าสู่ระบบ ตะกร้าสินค้า) ที่เพิ่มผ่าน JavaScript คำขอแบบอะซิงโครนัสจาก JavaScript สามารถใช้เพื่อสื่อสารกับปลายทาง WordPress REST API ที่ออกแบบโดยมีค่าใช้จ่ายต่ำกว่าการโหลดแบบเต็มหน้ามาก

หรือนี่คือจุดเริ่มต้นของการแคชวัตถุ เพจสามารถคงไดนามิกได้ แต่ส่วนต่างๆ ของเพจและข้อมูลใดๆ ที่ใช้ในเพจนั้นสามารถจัดเก็บและดึงข้อมูลในแคชอ็อบเจ็กต์เพื่อหลีกเลี่ยงความจำเป็นในการสืบค้นฐานข้อมูล

คำตอบของ WordPress VIP:

สภาพแวดล้อมแอปพลิเคชัน WordPress VIP แต่ละรายการมีคลัสเตอร์ Memcached เฉพาะของตัวเอง ซึ่งเก็บข้อมูลแคชของวัตถุในหน่วยความจำเพื่อการดึงข้อมูลที่รวดเร็วและมีประสิทธิภาพ

รับการอัปเดตเนื้อหาล่าสุด

ต้องการรับการแจ้งเตือนเกี่ยวกับเนื้อหาใหม่หรือไม่ ฝากที่อยู่อีเมลของคุณไว้ด้านล่าง แล้วเราจะทำให้แน่ใจว่าคุณได้รับการอัปเดตอยู่เสมอ

การปรับใช้โค้ดที่ยังไม่ได้ทดสอบ

นี่เป็นอีกสาเหตุหนึ่งที่ทำให้เว็บไซต์หยุดทำงานและวินิจฉัยได้ง่าย โดยอิงจากสาเหตุและผลกระทบล้วนๆ

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

สิ่งที่ดีที่สุดที่จะทำเพื่อหลีกเลี่ยงสถานการณ์นี้? ทดสอบโค้ดทุกชิ้นอย่างละเอียดบนสภาพแวดล้อมการพัฒนาหรือการจัดเตรียมที่แยกต่างหากก่อนเผยแพร่สู่การใช้งานจริง

คำตอบของ WordPress VIP:

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

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

ข้อผิดพลาด PHP

WordPress ใช้โค้ด PHP บนเซิร์ฟเวอร์ ข้อผิดพลาด PHP อาจเป็น "ร้ายแรง" ซึ่งหมายความว่าเมื่อเกิดข้อผิดพลาด หน้าเว็บ สคริปต์ หรือคำสั่งจะหยุดทำงาน สิ่งเหล่านี้มักจะปรากฏเป็นข้อผิดพลาดที่มองเห็นได้ และจะถูกบันทึกไว้ในบันทึก PHP

หมายเหตุ: คำเตือน PHP บางอย่างใน PHP 7 กลายเป็นข้อผิดพลาดร้ายแรงใน PHP 8 ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องจัดการกับข้อผิดพลาดเหล่านี้อย่างจริงจัง

คำตอบ WordPress VIP (พร้อมคำแนะนำที่เป็นประโยชน์):

แพลตฟอร์มของเราจะบันทึกข้อผิดพลาด PHP ทั้งหมดโดยอัตโนมัติ ทำให้ลูกค้า WordPress VIP ใช้งานได้ในแดชบอร์ดและวิศวกรของเรา

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

แบบสอบถามฐานข้อมูล MySQL ช้า

เว็บไซต์ WordPress ทุกแห่งใช้ฐานข้อมูลเพื่อจัดเก็บเนื้อหาเว็บไซต์และข้อมูลการกำหนดค่า การสืบค้นฐานข้อมูลจะดึงข้อมูลเนื้อหานั้นสำหรับหน้าเว็บ แต่บางครั้งการสืบค้นเหล่านั้นก็ถูกเขียนอย่างไม่มีประสิทธิภาพ อาจทำงานได้ดีสำหรับไซต์ที่มีเพียงไม่กี่ร้อยหน้า แต่จะหยุดชะงักเมื่อจัดการข้อมูลจำนวนมาก (บางเว็บไซต์บนแพลตฟอร์มของเรามีบันทึกที่จัดเก็บไว้หลายล้านรายการ)

การสืบค้นที่ช้าจะเชื่อมโยงทรัพยากรฐานข้อมูล ซึ่งอาจส่งผลกระทบต่อความเสถียรของไซต์—ไม่ใช่แค่สำหรับหน้า สคริปต์ หรือคำสั่งที่เรียกใช้ SQL แต่ทั่วทั้งแอปพลิเคชัน ไซต์มักมีปัญหาเนื่องจากการสืบค้นฐานข้อมูลเดียวหรือหลายรายการช้า เช่น การสืบค้นใดๆ ที่ใช้เวลานานกว่า 0.75 วินาทีในการดำเนินการ

คำตอบของ WordPress VIP:

WordPress VIP ช่วยลดปัญหาคอขวดของฐานข้อมูลโดยให้แต่ละแอปพลิเคชันมีคลัสเตอร์ฐานข้อมูลเฉพาะที่มีฐานข้อมูลหลัก ซึ่งจะมีข้อความค้นหาการเขียนฐานข้อมูลทั้งหมด และฐานข้อมูลจำลองแบบอ่านอย่างเดียวอย่างน้อยหนึ่งฐานข้อมูล สิ่งนี้จะเพิ่มจำนวนการสืบค้นฐานข้อมูลพร้อมกันที่อาจเกิดขึ้น กระจายโหลดทรัพยากรเมื่อไซต์อยู่ภายใต้แรงกดดัน ที่กล่าวว่าการสืบค้นฐานข้อมูลที่ช้าไม่สามารถแก้ไขได้โดยการเพิ่มทรัพยากรฐานข้อมูลเพิ่มเติมเสมอไป นั่นเป็นเหตุผลที่เราแนะนำให้ลูกค้าตรวจสอบการสืบค้นฐานข้อมูลที่ช้าโดยใช้ Query Monitor และ New Relic (จัดทำโดยแพลตฟอร์มของเรา) สิ่งเหล่านี้เน้นที่การสืบค้นข้อมูลเกิดขึ้นในฐานข้อมูล ดังนั้นทีมพัฒนาของคุณสามารถจัดองค์ประกอบใหม่เพื่อเพิ่มประสิทธิภาพการทำงาน

สุดท้ายนี้ ฝ่ายสนับสนุนแอปพลิเคชันและวิศวกรระดับพรีเมียร์ของเรายังสามารถช่วยทีมของคุณค้นหาและวิเคราะห์คำถามเหล่านี้ และแนะนำวิธีปรับปรุงเพื่อความเร็วและประสิทธิภาพ

การเขียนฐานข้อมูลมากเกินไป

ในบางครั้ง คุณลักษณะ เช่น การบันทึกแบบกำหนดเองหรือโค้ดติดตาม จะอัปเดตฐานข้อมูลในทุกคำขอ สิ่งนี้สามารถนำไปสู่ความไม่เสถียรด้วยเหตุผลสองประการ:

  • การ จำลองฐานข้อมูลก่อน หน้า : แบบสอบถามการเขียนทั้งหมดจะถูกส่งไปยังฐานข้อมูลหลัก แบบสอบถามฐานข้อมูลที่ตามมาสำหรับตารางเดียวกัน (หรือตาราง) ในคำขอหน้าเดียวกันจะถูกนำไปที่นั่นด้วย โดยไม่ใช้ประโยชน์จากแบบจำลองฐานข้อมูล สิ่งนี้จะจำกัดความสามารถในการปรับขนาดของไซต์
  • การ ข้ามการแคชเพจ : สำหรับการเขียนฐานข้อมูลที่จะเกิดขึ้นในทุกคำขอของเพจ การแคชเพจจะต้องถูกข้าม แต่การทำเช่นนี้หมายความว่าแนวป้องกันแรก (และดีที่สุด) ถูกบุกรุก

คำตอบของ WordPress VIP:

ในกรณีเหล่านี้ เราแนะนำให้ปรับโครงสร้างคุณลักษณะใหม่ ตัวอย่างเช่น การวิเคราะห์เนื้อหามักจะมอบหมายให้ดีที่สุดกับบริการภายนอกที่ใช้ข้อมูลโค้ด JavaScript ในหน้าแทนที่จะเป็นโค้ดฝั่งเซิร์ฟเวอร์ ซึ่งใช้งานไม่ได้กับการแคชและอาจส่งผลให้มีการเขียนฐานข้อมูลมากเกินไป

สาเหตุอื่นๆ ของการหยุดทำงานและวิธีหลีกเลี่ยง

ปลั๊กอิน

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

คำตอบของ WordPress VIP:

ในฐานะผู้ดูแลระบบนิเวศที่ดี เราติดต่อผู้ขายเพื่อขอคำแนะนำเพื่อให้ปลั๊กอินของพวกเขาทำงานได้ดีขึ้นในสภาพแวดล้อมที่มีการเข้าชมสูง นอกจากนี้เรายังสามารถแนะนำปลั๊กอินอื่นที่ได้รับการทดสอบและทดสอบในวงกว้างบนแพลตฟอร์มของเรา

การบันทึกแบบกำหนดเอง

การบันทึกแบบกำหนดเองเป็นเครื่องมือแก้ไขจุดบกพร่องที่มีประสิทธิภาพ ซึ่งมักจะเป็นวิธีเดียวที่ใช้ได้ผลในการติดตามจุดบกพร่องหรือปัญหาที่ดูเหมือนว่าจะเกิดขึ้นเฉพาะในไซต์ที่ใช้งานจริงเท่านั้น อย่างไรก็ตาม หลายครั้งที่เราได้เห็นการบันทึกแบบกำหนดเองที่สร้างขึ้นใน PHP บนไซต์ที่มีการเข้าชมสูงทำให้สิ่งต่างๆ ช้าลง หรือทำให้ไซต์ตกอยู่ในอันตรายจากการหยุดทำงานด้วยการเขียนฐานข้อมูลที่มากเกินไป

คำตอบของ WordPress VIP:

สำหรับลูกค้า เราให้สิทธิ์เข้าถึงบันทึก PHP มาตรฐานในแผงสุขภาพของแดชบอร์ดแอปพลิเคชัน VIP ของ WordPress ที่นั่นพวกเขาสามารถบันทึกข้อผิดพลาดที่กำหนดเอง (และไปยัง New Relic) ซึ่งจะไม่ส่งผลเสียต่อฐานข้อมูล

การเรียก API ระยะไกล

บางเว็บไซต์ใช้ประโยชน์จากการเรียก REST API ฝั่งเซิร์ฟเวอร์ไปยังแอปพลิเคชันหรือบริการอื่นๆ สิ่งเหล่านี้ค่อนข้างเร็วภายใต้สถานการณ์ปกติ แต่บางครั้งรหัสแอปพลิเคชันพื้นฐานทำให้ตอบสนองช้า หมดเวลา หรือเกิดข้อผิดพลาด

คำตอบของ WordPress VIP:

เพื่อลดปัญหาเหล่านี้ เราขอแนะนำ "การเข้ารหัสเชิงป้องกัน" ขึ้นอยู่กับวัตถุประสงค์ของการโทรทางไกล แต่บ่อยครั้งเมื่อคำขอระยะไกลล้มเหลว เป็นไปได้ที่จะถอยกลับในการตอบสนองที่แคชไว้จากคำขอก่อนหน้า—หรืออย่างน้อย “จัดการข้อผิดพลาดอย่างงดงาม” เพื่อให้ส่วนที่เหลือของหน้าสามารถ ยังคงโหลด เรามีฟังก์ชันตัวช่วยจำนวนหนึ่งเพื่อจัดการกับสถานการณ์เหล่านี้ การรักษาระยะหมดเวลาให้ต่ำยังหมายความว่าทรัพยากร PHP จะว่างเร็วขึ้นหาก API ระยะไกลไม่ตอบสนอง

อ่านเพิ่มเติมในซีรี่ส์การหลีกเลี่ยง CMS Disaster

เมื่อธุรกิจของคุณอยู่ในสายงาน คุณไม่สามารถส่งธุรกิจใหม่ไปที่อื่นและทำให้แบรนด์ของคุณเสื่อมเสียได้ด้วยการให้ระบบจัดการเนื้อหา (CMS) มอบประสบการณ์ดิจิทัลที่ไม่ดี ใน วิธีปรับปรุงประสิทธิภาพของเว็บไซต์ เราวิเคราะห์สาเหตุของการชะลอตัวที่พบบ่อยห้าประการและวิธีเร่งความเร็วของสิ่งต่าง ๆ โดยใช้ CMS ที่คล่องตัว

วันที่มีการจราจรหนาแน่นควรเป็นสาเหตุแห่งการเฉลิมฉลอง ไม่ใช่ฝันร้ายสำหรับวิศวกรที่พยายามจะรักษาไซต์และแอปพลิเคชันไว้ และส่งเสียงฮัมเพื่อจัดการกับโหลด—และชื่อเสียงของคุณไม่เสียหาย ใน Scaling WordPress for High Traffic เราสำรวจสี่วิธีในการทำให้เว็บไซต์ WordPress สามารถจัดการกับคลื่นน้ำขึ้นน้ำลงของทราฟฟิกเหล่านั้น