ในบทความนี้จะเป็นวิธีการแก้ไขปัญหา 503 Service Unavailable ที่ทำให้เว็บไซต์ WordPress ของคุณมีปัญหานะครับ โดยปัญหาเว็บไซต์นี้อาจขึ้นว่า “503 Service Unavailable” หรือ “503 Error” หรือแค่ “Service Unavailable” ต่างกันไปครับ
503 Service Unavailable เกิดจากอะไร
ทางเทคนิคคือปัญหาที่เกิดจากฝั่งเซิร์ฟเวอร์ครับ ที่แจ้งว่าระบบจะไม่สามารถใช้งานหรือเข้าถึงได้ชั่วคราว อาจมีหลายเหตุผลซึ่งปัญหา 503 Error นี้หาต้นตอที่แท้จริงได้ค่อนข้างยากครับ ยกตัวอย่างเช่น มีผู้ใช้งานเข้ามาพร้อมกันเยอะเกินไป เซิร์ฟเวอร์หรือระบบกำลังอยู่ในช่วงปรับปรุง หรือปัญหาเกิดจาก Theme / Plugin ในระบบ WordPress ครับ
ซึ่ง Error นี้ จากในงาน Search Central Live Bangkok 2024 ที่จัดโดย Google ในปี 2024 แจ้งว่าเว็บไซต์ที่เกิด 503 Error บ่อย ๆ ทำให้บอทเข้ามาเก็บข้อมูลน้อยลง ซึ่งมีผลกระทบกับอันดับครับ
โดยหากเจอ 503 Error ปกติมักจะขึ้นข้อความประมาณว่า ‘Error 503″ “503 Service Unavailable” ครับ
ก่อนหน้านี้ ได้ทำอะไรไปบ้างไหมครับ?
ลองนึกย้อนกลับไปก่อนเกิดปัญหาครับ ทำอะไรไปในเว็บไซต์บ้าง วิธีนี้จะทำให้การแก้ปัญหาง่ายขึ้นครับ ถ้ารู้ว่าก่อนหน้านี้ได้ทำอะไร เช่น
- อัพเดท Theme/Plugin/WordPress
- แก้ไขไฟล์ Theme/Plugin
- แก้ไขการตั้งค่า Theme/Plugin ในเว็บไซต์
- ลบไฟล์ในระบบ
- แคชในเว็บไซต์
- ติดตั้ง Cloudflare / CDN อื่น ๆ
- แก้ไขไฟล์ Config ใน Server
หากได้กระทำการใด ๆ ในด้านบน จะสามารถหาต้นตอได้ง่ายครับ ไม่ต้องสุ่มหา
หรือหากมีผู้ชมเว็บไซต์เข้าเยอะแล้วล่ม หากสังเกตจุดนี้ได้ชัด ตรงนี้นับว่าเป็นต้นตอได้เลยครับ จากประสบการณ์ที่ผมรับแก้เว็บไซต์มา กว่าครึ่งเกิดจากโฮสติ้งรับไม่ไหวครับ เพราะคนเข้าใช้งานพร้อมกัน
503 Service Unavailable แก้ไขยังไง
มีวิธีหลากหลายครับ โดยที่ให้ดูไปทีละข้อนะครับ
หากปัญหาเกิดจาก Traffic เข้าเยอะมากจนเว็บล่มและขึ้น 503 Error (พบบ่อย)
ปัญหา 503 Error ส่วนใหญ่ที่ผมเจอ มักจะเกิดจาก traffic หรือคนเข้าเว็บไซต์พร้อมกันเยอะ ๆ หรือ traffic ต่อวันเข้ามาเยอะๆ แล้วเว็บดับ และขึ้น 503 Error มักจะมาจากสาเหตุต่อไปนี้ครับ
- เซิร์ฟเวอร์หรือโฮสติ้งรับโหลดไม่ไหว: ถ้าเซิร์ฟเวอร์มีทรัพยากรหรือสเป็คไม่สูงพอ เช่น RAM/CPU ไม่พอ หรือทำการ config ตั้งค่าไว้ไม่ดีหรือไม่ได้ตั้งค่าเพื่อรองรับโหลดขนาดนั้น อาจทำให้เว็บดับและขึ้น 503 ได้ครับ
- หากใช้ Shared Hosting หรือโฮสติ้งทั่วไป (ที่มักชำระเงินเป็นรายปี) ต้องแจ้งทางโฮสติ้งให้ทราบเพื่อหาวิธีแก้ไขปัญหาต่อไปนะครับ เนื่องจากส่วนใหญ่เขาจะไม่บอก Spec อยู่แล้วว่าเท่าไหร่ หรือตั้งค่ายังไง เพราะ Shared Hosting ทางผู้ให้บริการจะตั้งค่าเพื่อให้เว็บหลาย ๆ เว็บอยู่รวมกันได้อย่างราบรื่นครับ
- เว็บไซต์ไม่มีการปรับจูนระบบที่ดีพอ: เว็บไซต์ที่เขียนไว้ไม่ดี มีโค้ดหรือการวางระบบที่ไม่ดี มีรูปภาพหนัก หรือหากเป็นเว็บ WordPress คือไม่มีการทำ caching หรือใช้ plugin จำนวนเยอะมาก ๆ ก็มีส่วนที่ทำให้เกิด 503 Error ได้ครับ
- โฮสติ้งไม่ดี: โฮสติ้งบางที่ไม่มีการปรับระบบที่ดีพอ หรือไม่ได้ปรับจูนให้รองรับ Traffic จำนวนมาก อาจทำให้ล่มและขึ้น 503 ก็ได้ครับ
- ฐานข้อมูลไม่ได้มีการปรับจูนที่ดีพอ: ฐานข้อมูล หรือ database ที่ใช้อาจมีแต่เศษซากข้อมูลที่ระบบทิ้งไว้ บางทีเยอะเกินและฐานข้อมูลบวม ทำให้เว็บล่มได้ครับ เพราะเวลามีคนเข้ามาเยอะๆ ตัวระบบก็ต้องไปค้นหาข้อมูลจากฐานข้อมูลที่บวม ทุกครั้ง ๆ ที่มีคนเข้ามา และการที่เข้าไปค้นนั่นเองทำให้โหลดหนักขึ้น ๆ เรื่อย ๆ จนระบบรับไม่ไหวครับ
หากปัญหาเกิดจาก Cache ในระบบ / CDN เช่น Cloudflare
หากลงปลั๊กอินแคช เช่น WP Rocket, SWIFT Performance ฯลฯ แล้วมีปัญหา ให้ลองเช็คการตั้งค่าของปลั๊กอินนั้นก่อนครับ หรือหากหาไม่เจอให้ปิดปลั๊กอินนั้นทิ้งไปครับ อาจเกิดจาก Conflict ของปลั๊กอินนั้น กับตัวอื่นในระบบ หรือการตั้งค่าของเซิร์ฟเวอร์เองครับ
หรือหากมีการใช้ CDN เช่น Cloudflare มาครอบ และมีการตั้งค่าที่ Cloudflare และเว็บไซต์เกิดปัญหาเข้าไม่ได้ และ Error 503 ให้ลองเช็คการตั้งค่าให้ดีครับ ส่วนใหญ่เกิดจากการใส่ HTTPS (SSL) ใน Cloudflare ครับ
หากรู้ว่าปัญหาเกิดจาก Theme/Plugin ตัวใดตัวหนึ่ง หรือหลายตัว
สำรองข้อมูลก่อนครับ สำคัญมาก ๆ ครับ อาจลองติดต่อหา Hosting ว่า backup ล่าสุดเมื่อไหร่ เป็นก่อนวันหรือเวลาที่เกิดปัญหาไหมครับ ถ้ากู้ backup ได้อาจเป็นการแก้ปัญหาที่ดีกว่าครับ
หากได้แก้ไขการตั้งค่าหรือไฟล์ Theme/plugin ใด ๆ แล้วขึ้น Error นี้เลย วิธีที่ง่ายที่สุดคือปิดปลั๊กอิน/ธีมทิ้งก่อนครับ (วิธีปิดปลั๊กอินอยู่ในหัวข้อด้านล่างครับ) หากเป็นการแก้ไขให้แก้ไฟล์กลับเป็นเหมือนเดิมก่อนที่จะเป็นปัญหา หรือหากไม่มี backup ให้ลองหาไฟล์ plugin ต้นฉบับหรือเวอร์ชั่นที่เก่ากว่าเข้าทับดูนะครับ
หากไม่รู้ว่าเกิดจากอะไร
หากไม่รู้ว่าเกิดจากอะไร ผมไม่แนะนำให้ไปปิด Plugin/Theme สุ่มสี่สุ่มห้าครับ ทำให้เกิดปัญหาบานปลายได้ครับ โดยที่ WordPress มีฟังค์ชั่นที่เรียกว่า Debug ซึ่งจะทำให้เว็บไซต์แสดงหรือบันทึกข้อผิดพลาดภายในให้เราเห็นได้ครับ และจะได้เข้าแก้ถูกจุด
หากเข้าหลังบ้าน wp-admin ไม่ได้ ให้เตรียมรหัส FTP ครับ หากหาไม่เจอให้ลองทำตามวิธีการหารหัสโฮสติ้ง รหัส FTP ดูนะครับ และลองใช้โปรแกรมเช่น Filezilla เพื่อต่อเข้าโฮสติ้งนะครับ
ถ้าเข้าแล้ว รูปร่างหน้าตาของไฟล์เว็บไซต์จะเป็นดังรูป จะสังเกตว่ามี folder ชื่อว่า wp-admin, wp-content, wp-includes และไฟล์ขึ้นต้นด้วย wp- ทั้งหลายครับ แสดงว่าน่าจะมาถูกที่แล้ว
หากได้รหัสมาแล้ว สามารถทำตามขั้นตอนต่อไปนี้ได้เลยครับ
- ขั้นตอนที่ 1: เชื่อมต่อ FTP
- ขั้นตอนที่ 2: หาไฟล์ที่ชื่อว่า wp-config.php และคลิกขวาและ Edit หรือดาวน์โหลดลงเครื่องมาเพื่อแก้ไขด้วยโปรแกรมเช่น Notepad หรือ Visual Studio ก็ได้ครับ
- ขั้นตอนที่ 3: เปลี่ยน
define( 'WP_DEBUG', false );
จากfalse
เป็นtrue
ครับ เพื่อเปิดโหมด debug
- ขั้นตอน 4: ใส่โค้ดต่อไปนี้ต่อจากบรรทัด
define( 'WP_DEBUG', false );
ได้เลย
define( 'WP_DEBUG_DISPLAY', false );
// แสดง Debug ในหน้าจอ (จะปรับเป็น true ก็ได้นะครับ แต่ถ้ามีคนเข้าเว็บอยู่ก็จะเห็น Error บานเลยครับ ผมแนะนำให้ปรับเป็น True เฉพาะเว็บที่คนเข้าไม่เยอะหรือยังไม่ได้ Live นะครับ
define( 'WP_DEBUG_LOG', true ); // บันทึก error เป็นไฟล์เพื่ออ่านได้
ถ้าเสร็จแล้วหน้าตาจะออกมาประมาณนี้ครับ
เสร็จแล้วสามารถเซฟได้เลย ถ้าโปรแกรม Filezilla ถามว่าจะอัพโหลดทับไหม ให้คลิก Yes ได้เลยนะครับ หรือหากว่าดาวน์โหลดลงมาที่เครื่องแล้วค่อยอัพขึ้นไป สามารถอัพขึ้นไปทับไฟล์ wp-config ปัจจุบันได้เลยครับ
เสร็จลองไป refresh ที่หน้าเว็บ 1 ทีเพื่อให้ระบบมันเก็บข้อมูล (แต่หากมีคนเข้าอยู่แล้ว ไม่ต้องก็ได้ครับ) ในโปรแกรม Filezilla แล้วไปที่ wp-content จะเห็นว่าไฟล์ debug.log ครับ ให้คลิกขวาและแก้ไขไฟล์นั้น หรือดาวน์โหลดไฟล์นั้นและเปิดด้วย Notepad ได้เลยตามสะดวก
หมายเหตุ: หากในตัวโค้ด ช่อง 'WP_DEBUG_DISPLAY'
เป็น true
ตัว error log จะแสดงในหน้าเว็บเลยครับ ไม่ต้องทำตามขั้นตอนนี้
ในนี้แหละครับที่จะขึ้นว่า error เพราะอะไร อาจเป็นชื่อ plugin หรือ theme ที่คุ้น ๆ หรืออาจเคยเห็นไฟล์ที่แก้ไขไปแล้วและมีข้อผิดพลาดก็ได้ครับ
แต่หากเกิดจากไฟล์ WordPress ให้ลองดูหัวข้อด้านล่างนะครับ: หากปัญหาเกิดจากไฟล์ WordPress เอง
หากต้องการปิด เช่นในเคสนี้ Plugin Elementor มีปัญหา ผมจึงไปที่ wp-content/plugins และเปลี่ยนชื่อ Folder elementor เป็น elementor-fix เพื่อปิดปลั๊กอินครับ การที่เปลี่ยนชื่อโฟลเดอร์ Theme/Plugin ใดๆ ไปเป็นชื่ออื่นแม้แต่ตัวอักษรเดียว จะเป็นการปิดปลั๊กอินครับ
และเท่านี้ หากปลั๊กอินนี้ก่อปัญหาจริง เว็บจะสามารถเข้ามาใช้งานได้ครับ
หากแก้แล้วหาย…
การเปิด mode debug จะทำให้ระบบบันทึก error ทั้งหมดที่เกิดขึ้น ซึ่งอาจเปลืองทรัพยากรของเซิร์ฟเวอร์ อาจทำให้เซิร์ฟเวอร์ทำงาหนักขึ้นหรือไฟล์ debug.log มีขนาดใหญ่ขึ้น เมื่อไม่ใช้แล้วควรปิดโดยลบบรรทัด debug ทั้ง 2
ลองวิธีด้านบนทั้งหมดแล้ว ก็ยังไม่หาย
วิธีนี้จะเป็นการปิดปลั๊กอิน หรือ/และ ธีม ทุกตัว ในเว็บไซต์นะครับ หากทำแล้วต้องกลับไปเปิดใหม่ทั้งหมด อาจส่งผลต่อการใช้งานเว็บไซต์ได้ครับ กรุณาใช้อย่างระมัดระวังและแบ็คอัพ แบ็คอัพ แบ็คอัพครับ
ปิด Theme/Plugin ทั้งหมด
- โดยเราจะเปลี่ยนชื่อโฟลเดอร์ plugins และ/หรือ themes เป็นอย่างอื่นครับ (คำแนะนำผมให้ลบตัว s ข้างหลังออกตัวเดียวพอเพื่อกันสับสน)
- การกระทำนี้เป็นการปิดการใช้งานธีมหรือปลั๊กอินครับ โดยการที่เราเปลี่ยนชื่อโฟลเดอร์ จะทำให้ WordPress หาไฟล์ไม่เจอและปิดการใช้งาน theme/plugins ทั้งหมดโดยอัตโนมัติครับ เป็นการปิดทั้งหมดเลยนั่นเองแล้วมาไล่ดูกันว่าตัวไหนก่อปัญหา
- ทีนี้ล็อกอินเข้ามาใน wp-admin แล้ว WordPress จะฟ้องว่าหา theme/plugins ไม่เจอและจะปิดการทำงานของมัน
- ให้ใช้ ftp เปลี่ยนโฟลเดอร์ที่เราเปลี่ยนชื่อเปลี่ยนกลับเหมือนเดิมครับ เปลี่ยนโฟลเดอร์ธีมกลับเป็น themes และปลั๊กอินเป็น plugins
- ไล่เปิดการใช้งานธีม หรือปลั๊กอินดูทีละตัวแล้วกลับไปที่หน้าเว็บ แล้วลองกด Refresh หน้าเว็บดู แล้วดูครับว่าเปิดตัวไหน Refresh หน้าเว็บแล้วขึ้น 503 Error ตัวนั้นคือตัวปัญหาครับ ให้จัดการแก้ปัญหาต่อไป อาจลองอัพเกรดไปเวอร์ชั่นใหม่ ลองแก้ไขโค๊ดดูถ้าหากพัฒนาเอง หรือลบทิ้งแล้วหาตัวอื่นมาแทนครับ
หากปัญหาเกิดจากไฟล์ WordPress เอง
กรุณาจด Version WordPress ปัจจุบันเอาไว้นะครับ หากมีปัญหาจะได้ดาวน์โหลด WordPress version เดิมเข้าไปทับได้ หรือให้แบ็คอัพไว้ก่อนครับ ย้ำว่า Backup สำคัญมาก ๆ ครับ
- ลบโฟลเดอร์ wp-admin และ wp-includes ทิ้ง และไฟล์ที่ขึ้นต้นด้วย wp- ทั้งหมด (ยกเว้นโฟลเดอร์ wp-content และไฟล์ wp-config.php นะครับ)
- ดาวน์โหลดจาก wordpress.org แตกไฟล์และอัพโหลดไฟล์ทั้งหมด ยกเว้น folder wp-content ระบบจะถามว่าต้องการทับไฟล์ไหม ให้ทับได้เลยครับ
อีกหนึ่งความเป็นไปได้: ปัญหาเกิดจาก .htaccess file
ปัญหานี้อาจลองเริ่มจากการเช็คว่าไฟล์ .htaccess มีปัญหาหรือเปล่านะครับ ใช้ FTP เชื่อมต่อไปที่เว็บของเรา แล้วในโฟลเดอร์ที่ติดตั้ง WordPress เปลี่ยนชื่อไฟล์ .htaccess เป็นอย่างอื่นดูครับ เช่น .htaccess_backup ก็ได้
เสร็จแล้วเข้าหลังบ้าน (wp-admin) ไปที่ ตั้งค่า (Settings) -> ลิ้งค์ถาวร (Permalink) ไม่ต้องแก้ไขอะไรแล้วกดบันทึก (Save) เลยครับ ข้อนี้สำคัญนะครับ ไม่งั้นจะเข้าหน้าอื่นๆ นอกจากหน้าแรกไม่ได้เลย
หรือถ้ายังไม่หายอีก…
เพิ่ม PHP Memory Limit
อันนี้สำหรับท่านที่ใช้เว็บโฮสติ้งทั่วไปสามารถแจ้งทางผู้ให้บริการเว็บโฮสติ้งให้เพิ่มให้ได้นะครับ แจ้งเขาว่า“ผมต้องการเพิ่ม PHP Memory Limit หน่อยครับ เนื่องจากเว็บติด 503 Error เพราะ Memory Limit ไม่พอหลายครั้ง…”
แต่จะเพิ่มได้เท่าไหร่นั้นขึ้นกับนโยบายของผู้ให้บริการเว็บโฮสติ้งนะครับ บางเจ้าให้มาค่าเริ่มต้นเพียง 64MB ซึ่งบางทีไม่พอต่อการใช้งาน สามารถขอเขาเพิ่มให้เป็น 128MB, 256MB หรือถ้าโฮสไหนใจดีหน่อยให้ 512MB (ส่วนใหญ่ไม่มีหรอกครับ มากที่สุดเท่าที่เคยเจออยู่ที่ 256MB) เท่านี้ก็ไม่น่าติดปัญหาอะไรอีกแล้วครับ
แต่ถ้ามี Server เป็นของตัวเอง หรือเช่า Cloud ผู้ใช้งานอาจต้องเพิ่มเองครับ โดยแก้ไฟล์ php.ini หา
php_memory_limit
แล้วแก้เอาได้ครับ
503 Service Unavailable ป้องกันได้อย่างไร
- ใช้ Plugin/Theme และ Core WordPress ที่เป็นเวอร์ชั่นล่าสุด เพื่อให้ระบบทันสมัยและพวก Bug, error และช่องโหว่ด้านความปลอดภัยที่มีจะถูกแก้ไขทั้งหมด
- ปรับขนาดภาพให้ไซส์เล็ก (เป็นไปได้ต่อ 1 ภาพไม่ควรเกิน 100kb) เพื่อให้รูปโหลดได้เร็วขึ้นและไม่หนักเว็บ
- ใช้ปลั๊กอินแคช เช่น WP Rocket, SWIFT Perfomance, W3 Total Cache และ Object Cache Pro/Redis เพื่อทำให้เว็บเร็วขึ้นและลด Load ใน Server
- ใช้โฮสติ้งที่มีคุณภาพ ที่รองรับโหลดหนัก ๆ ที่เว็บไซต์ทีและแบ็คอัพสม่ำเสมอ
หากทำตามนี้ ปัญหา 503 จะน้อยลงถึงไม่มีเลยครับ และเว็บไซต์จะออนไลน์อยู่ตลอดเวลาเพื่อให้การใช้งานของผู้ใช้ต่อเนื่องครับ
แต่หากแก้แล้วไม่หาย มาหาเราได้เลยครับ MAKE2WEB ยินดีให้บริการ แก้ปัญหาเว็บไซต์