503 Service Unavailable คืออะไร? เมื่อเซิร์ฟเวอร์ยังอยู่แต่รับงานไม่ไหว
503 ต่างจาก error ตัวอื่นในกลุ่ม 5xx ตรงที่บางครั้งมันคือสิ่งที่เราตั้งใจให้เกิดขึ้นเอง เวลาปิดเว็บเพื่ออัปเดต การตอบ 503 พร้อมบอกว่าจะกลับมาเมื่อไหร่ คือวิธีที่ถูกต้องที่สุด
แต่ถ้า 503 โผล่มาโดยที่คุณไม่ได้สั่ง แปลว่าเครื่องกำลังบอกว่ามันรับงานเพิ่มไม่ไหวแล้ว บทความนี้แยกสองกรณีนี้ออกจากกัน และบอกว่าควรทำอะไรในแต่ละกรณี
503 หมายความว่าอะไร
ความหมายตรงตัวคือ บริการไม่พร้อมให้บริการชั่วคราว คำสำคัญคือคำว่าชั่วคราว ซึ่งต่างจาก 500 ที่แปลว่าเจอข้อผิดพลาดระหว่างประมวลผล และต่างจาก 404 ที่แปลว่าหาไม่เจอ
ในทางเทคนิค 503 มักถูกส่งออกมาในสองสถานการณ์ หนึ่งคือระบบถูกตั้งไว้ให้ตอบแบบนี้ระหว่างปิดปรับปรุง สองคือตัวรับคำขอยังทำงานอยู่แต่คิวเต็ม จึงปฏิเสธคำขอใหม่แทนที่จะปล่อยให้ทุกคนช้าไปพร้อมกัน
การปฏิเสธเมื่อคิวเต็มฟังดูแย่ แต่จริง ๆ เป็นการออกแบบที่ดี เพราะการรับงานเกินกำลังจะทำให้ทุกคำขอช้าจนไม่มีใครใช้งานได้เลย แทนที่จะเสียแค่บางส่วน
แยกให้ออกว่าเป็น 503 แบบไหน
| สังเกตจาก | ตั้งใจปิดปรับปรุง | รับงานไม่ไหว |
|---|---|---|
| หน้าที่แสดง | หน้าที่เราออกแบบไว้เอง มีข้อความบอกผู้ใช้ | หน้ามาตรฐานของเซิร์ฟเวอร์ ไม่มีข้อความอธิบาย |
| ช่วงเวลาที่เกิด | ตรงกับเวลาที่ทีมงานลงมือทำงาน | ตรงกับช่วงที่คนเข้าเว็บเยอะที่สุด |
| ความสม่ำเสมอ | ทุกคนเจอเหมือนกันหมด | บางคนเข้าได้ บางคนไม่ได้ สลับไปมา |
| ระยะเวลา | จบเมื่องานเสร็จ | มาเป็นช่วง ๆ แล้วหายเอง |
สาเหตุที่พบบ่อยเมื่อไม่ได้ตั้งใจ
- คนเข้าพร้อมกันมากกว่าที่เครื่องรับไหว เช่น ช่วงโปรโมชั่นหรือหลังโพสต์ที่มีคนแชร์เยอะ
- จำนวน worker หรือ process ที่ตั้งไว้ต่ำเกินไปเมื่อเทียบกับสเปกเครื่องที่มี
- มีงานเบื้องหลังกินทรัพยากรอยู่ เช่น การสำรองข้อมูล การสร้างรายงาน หรืองานตั้งเวลาที่รันพร้อมกันหลายตัว
- ฐานข้อมูลตอบช้าจนคำขอค้างสะสม ทำให้คิวเต็มเร็วกว่าปกติ
- ปลั๊กอินหรือกฎความปลอดภัยตอบ 503 เองเมื่อคิดว่ากำลังโดนโจมตี
- บอตเก็บข้อมูลไล่เปิดหน้าเว็บถี่เกินไปจนกินทรัพยากรเทียบเท่าคนจริงหลายเท่า
วิธีรับมือ
- 1ดูก่อนว่าเกิดตอนไหน — ถ้าเกาะกลุ่มอยู่ในช่วงเวลาเดิมทุกวัน ให้ไปดูงานตั้งเวลาที่รันช่วงนั้นก่อน
- 2ดูการใช้ CPU หน่วยความจำ และจำนวนคำขอต่อวินาที เทียบกับตอนปกติ ตัวเลขจะบอกเองว่าตันที่ทรัพยากรตัวไหน
- 3เปิดแคชหน้าเว็บ — คำขอที่ตอบจากแคชได้ไม่ต้องไปรบกวนฐานข้อมูลเลย มักลดโหลดลงได้มากที่สุดโดยไม่ต้องเพิ่มสเปก
- 4ปรับจำนวน worker ให้เหมาะกับ RAM ที่มีจริง ตั้งสูงเกินไปจะยิ่งทำให้เครื่องแย่ลง ไม่ใช่ดีขึ้น
- 5จำกัดอัตราคำขอจากบอตที่ไม่จำเป็น หรือชะลอความถี่ผ่านการตั้งค่าของ CDN
- 6ถ้าโหลดจริงโตขึ้นถาวรแล้ว ให้ขยายสเปกหรือกระจายไปหลายเครื่อง แทนการปรับค่าซ้ำไปมา
503 กับผลต่อ SEO
ในบรรดา error ทั้งหมด 503 เป็นตัวที่ปลอดภัยที่สุดสำหรับ SEO ถ้าใช้ให้ถูก เพราะมันสื่อว่าเป็นเรื่องชั่วคราวโดยตรง บอตที่เจอ 503 พร้อม Retry-After จะเลื่อนไปเก็บข้อมูลใหม่ทีหลัง แทนที่จะสรุปว่าหน้าเว็บหายไป
ปัญหาจะเกิดเมื่อ 503 อยู่นานเกินไปติดต่อกันหลายวัน หรือเกิดถี่จนบอตเจอบ่อยกว่าที่เจอหน้าปกติ กรณีนั้นความถี่ในการเข้ามาเก็บข้อมูลจะลดลง ซึ่งเป็นเรื่องน่ากังวลเป็นพิเศษกับเว็บใหม่ที่ยังต้องการให้ Google เข้ามาเก็บข้อมูลบ่อย ๆ
ถ้าปัญหาคือเว็บช้าและตันเป็นประจำ ไม่ใช่แค่ล่มเป็นครั้งคราว อ่าน วิธีแก้เว็บโหลดช้า ประกอบ
โหลดโตขึ้นจนเครื่องเดิมเริ่มไม่พอ
VPS ของ Plusweb เลือกสเปกได้ตั้งแต่ 1 vCore 1 GB RAM ไปจนถึง 10 vCores 24 GB RAM ขยายได้ตามโหลดจริง
คำถามที่พบบ่อย
503 หายเองได้ไหม
ได้ ถ้าสาเหตุคือโหลดสูงชั่วคราว เมื่อคนเข้าน้อยลงหรือ งานเบื้องหลังทำงานเสร็จ เว็บจะกลับมาเอง แต่การที่มันหายเองไม่ได้แปลว่าไม่มีปัญหา ควรดูย้อนหลังว่าตันที่ทรัพยากรตัวไหน ไม่อย่างนั้นครั้งหน้าที่คนเข้าเยอะกว่าเดิมจะพังนานกว่าเดิม
Retry-After คืออะไร ต้องใส่ไหม
เป็นข้อมูลที่ส่งไปพร้อมคำตอบ 503 เพื่อบอกว่าให้กลับมาลองใหม่อีกกี่วินาที ถ้าคุณตั้งใจปิดปรับปรุงควรใส่เสมอ เพราะช่วยให้บอตของ Search Engine เข้าใจว่าเป็นเรื่องชั่วคราว และช่วยให้ระบบอื่นที่เรียกใช้เว็บคุณรู้ว่าควรรอนานแค่ไหน
503 กับ 502 ต่างกันยังไง
503 คือระบบที่รับคำขออยู่บอกเองว่าตอนนี้ไม่พร้อม ส่วน 502 คือระบบตัวหน้าส่งงานต่อไปให้ตัวหลังแล้วได้คำตอบที่ใช้ไม่ได้กลับมา พูดง่าย ๆ คือ 503 มาจากตัวหน้าโดยตรง ส่วน 502 เป็นปัญหาระหว่างทางไปหาตัวหลัง
GUIDES
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
502 Bad Gateway คืออะไร? เข้าใจว่าใครคุยกับใครไม่รู้เรื่อง
502 ไม่ได้แปลว่าเว็บพัง แต่แปลว่าเซิร์ฟเวอร์สองตัวคุยกันไม่รู้เรื่อง บทความนี้อธิบายว่าใครคือ gateway ใครคือปลายทาง สาเหตุที่พบบ่อย และลำดับการไล่ตรวจที่ใช้ได้จริง
อ่านต่อ504 Gateway Timeout คืออะไร? เมื่อการรอนานเกินกลายเป็น error
504 บอกว่ามีงานบางอย่างช้าเกินกว่าที่ระบบจะรอไหว บทความนี้อธิบายว่างานแบบไหนที่มักเป็นต้นเหตุ และทำไมการเพิ่มค่า timeout ถึงเป็นทางแก้ที่ผิดในเกือบทุกกรณี
อ่านต่อเว็บโหลดช้าเกิดจากอะไร? 8 สาเหตุยอดฮิต + วิธีแก้ให้เร็วขึ้น
เว็บช้าแค่ 1–2 วินาทีก็ทำให้คนกดปิดหนีและอันดับ SEO ตกได้ มาดูว่าอะไรทำให้เว็บช้า และแก้ยังไงให้กลับมาไวโดยไม่ต้องรื้อทำใหม่
อ่านต่อ