Loading...

الأساسيات · قراءة 7 دقائق

503 Service Unavailable: ما الذي يرفضك مؤقتًا

من بين الأخطاء الشائعة، 503 هو الصادق: يقول إن الخدمة موجودة لكنها لا تستطيع خدمتك الآن. هذا يجعله الأسهل إصلاحًا — ويُخفي سببًا واحدًا يدفع الناس إلى تصحيح خادم لم يكن معنيًا بالأمر إطلاقًا.

آخر تحديث

503 Service Unavailable: ما الذي يرفضك مؤقتًا

ما الذي يعد به 503، وما لا يعد به

503 هو الخادم يقول "أنا موجود، فهمتك، عُد لاحقًا". خلافًا لـ 500 فهو لا يدّعي أن شيئًا تعطّل، وخلافًا لـ 502 فهو ليس عن محادثة فاشلة مع جهاز أبعد. إنه رفض مع "الآن" ضمنية.

تلك الـ"الآن" هي سبب كون 503 الرمز الصحيح للصيانة المخطط لها وللإثقال، والرمز الخاطئ لأي شيء دائم. محركات البحث تعامله كمؤقت وستعود، وهذا بالضبط ما تريده أثناء عملية نشر وبالضبط ما لا تريده على صفحة أحلتها إلى التقاعد — تلك حالتها 410 أو 301.

السبب 1 — نفدت سعة الأصل

لكل خادم سقف للعمل المتزامن: عمليات PHP-FPM الفرعية، وعمال التطبيق، واتصالات قاعدة البيانات. حين يُبلَغ السقف، ترفض حزمة جيدة الإعداد العمل الجديد بسرعة بـ 503 بدل قبوله وانتظاره حتى تنتهي مهلته. هذا هو النظام يتصرف بشكل صحيح تحت الضغط، حتى لو بدا وكأنه عطل.

كيف تتعرف عليها. حالات 503 تتبع الزيارات: تظهر عند الذروات وتزول حين تمر الذروة. أصلك يعمل طوال الوقت ويستجيب فورًا لطلب تُجريه في لحظة هادئة.

ما يساعد فعليًا. رفع أعداد العمال يزيح السقف وعادةً ما ينقل عنق الزجاجة إلى الذاكرة أو قاعدة البيانات. الإصلاح الدائم هو التوقف عن إرسال عمل متكرر إلى الأصل إطلاقًا: خزّن الصفحات القابلة للتخزين المؤقت، وامنحها مدة صلاحية (TTL) طويلة بما يكفي لتُجدي، ودع الحافة تمتص الذروة. حملة تُذيب أصلًا عند 200 طلب في الثانية غالبًا ما تكون 195 طلبًا للحفنة نفسها من الصفحات.

السبب 2 — وضع الصيانة

أدوات النشر وإضافات أنظمة إدارة المحتوى تضع الموقع خلف صفحة صيانة وتُعيد 503 أثناء عملها. هذا سلوك صحيح والرمز هو الصحيح.

يحدث خطآن مع ذلك. الأول وضع صيانة لا يُزال أبدًا — نشر فاشل يترك ملف العلامة في مكانه والموقع يقدّم 503 لفترة طويلة بعد انتهاء العمل. الثاني صفحة صيانة تُقدَّم برمز 200، ما يخبر الزواحف أن إشعار الصيانة هو محتواك الفعلي ويستحق الفهرسة.

إن كان وضع الصيانة مفعّلًا لأكثر من بضع دقائق، أضف ترويسة Retry-After. تكلفتها سطر واحد وهي الفرق بين زاحف يتراجع بأدب وزاحف يقرر أن موقعك غير موثوق.

السبب 3 — تحديد معدل الطلبات رفض الطلب

تحديد معدل الطلبات يرفض الطلبات التي تصل أسرع من العتبة المُعدَّة. تبعًا للبرمجية وإعدادها، يصل الرفض كـ 429 Too Many Requests أو كـ 503 — nginx مثلًا يرفض الطلبات المحدودة المعدل بـ 503 ما لم يُخبَر باستخدام رمز آخر.

هذا مهم حين تقرأ السجلات: دفعة من 503 تؤثر في عميل واحد، أو مسار واحد، أو عامل مستخدم واحد، بينما يُخدَم كل شيء آخر بشكل طبيعي، هي تحديد معدل يؤدي عمله لا مشكلة سعة. الإصلاح هو النظر إلى من يصطدم بالحدّ. إن كان كاشطة، فالحدّ يعمل. وإن كان تطبيق هاتفك المحمول الخاص يستطلع نقطة نهاية كل ثانية، فالحدّ صحيح والتطبيق مخطئ.

السبب 4 — لا أصل لدى الحافة لاسم المضيف هذا

هذا هو السبب الذي يُهدر بعد ظهر كاملًا، ولا علاقة له بخادمك إطلاقًا.

حين يشير DNS الخاص باسم مضيف إلى حافة CDN لكن ذلك الاسم لم يُعدّ على الحافة — الحساب غير موجود بعد، أو لم يُضَف اسم مضيف التوصيل، أو خطأ إملائي وضع السجل على الاسم الخطأ — لا يكون لدى الحافة أصل تسأله. لا يمكنها إعادة 502، لأنه لم تكن هناك محادثة فاشلة. تُعيد 503 بصفحة تقول إنه لا توجد خدمة مُعدَّة لهذا النطاق.

التسلسل الذي يُنتج ذلك واحد دائمًا: شخص ما يغيّر DNS أولًا وينهي إعداد اللوحة لاحقًا، أو يغيّر DNS لـ www بينما أُضيف اسم المضيف كنطاق مجرّد. الموقع "يتعطل" لحظة انتشار DNS، والأصل سليم تمامًا، والإصلاح يستغرق دقيقة بمجرد أن تتوقف عن النظر إلى الجهاز الخطأ.

كيف تتعرف عليه فورًا. اقرأ صفحة الخطأ بدل رمز الحالة وحده. صفحة "لا خدمة مُعدَّة" الخاصة بـ CDN لا لبس فيها وتسمّي المشكلة. ثم تحقق من أن اسم المضيف في لوحتك يطابق الاسم في سجل DNS تمامًا، بما في ذلك www.

ما ترسله، وما ينبغي أن يراه الزوار

إن كنت أنت من يُعيد 503، فأمران يجعلانها أقل كلفة بكثير.

أرسل Retry-After. إما عدد ثوانٍ أو تاريخ HTTP. الزواحف تحترمها، والعملاء جيدو الكتابة يحترمونها، وهي تحوّل الرفض إلى جدول زمني.

قدّم شيئًا إنسانيًا. صفحة خطأ الوسيط الافتراضية لا تخبر الزائر بشيء وتبدو معطوبة. صفحة بهوية علامتك التجارية مع جملة عمّا يحدث عمل قليل جدًا مقابل فرق كبير في كيفية تجربة الحادثة.

وإن كان المحتوى قابلًا للتخزين المؤقت، يمكن لـ CDN الاستمرار في تقديم النسخة المخزَّنة مؤقتًا بينما يرفض الأصل — وهذا هو الفرق بين "كان الموقع بطيئًا لعشر دقائق" و"كان الموقع معطّلًا لعشر دقائق".

الأسئلة الشائعة حول 503 Service Unavailable

هل 503 أفضل أم أسوأ من 502؟

إنه أكثر إفادة بالمعلومات. 503 رفض متعمَّد، فجهة ما في المسار تعمل بما يكفي لتقرر. أما 502 فتعني أن محادثة مع الجهاز الخلفي فشلت. عمليًا، 503 غالبًا ما تكون مسألة سعة أو إعداد تتحكم بها أنت، و502 غالبًا ما تكون أصلًا معطوبًا.

هل يضر 503 بترتيبي في نتائج البحث؟

لا، إن كان مؤقتًا فعليًا. محركات البحث تعامل 503 كـ"عُد لاحقًا"، ولهذا هو الرمز الصحيح أثناء الصيانة. أما 503 يستمر أيامًا فمسألة مختلفة: ستُسقَط الصفحات في النهاية. أضف Retry-After ليعرف الزاحف ما يتوقعه.

أحصل على 503 فور توجيه DNS نحو CDN. ماذا الآن؟

تحقق من صفحة الخطأ. إن قالت إنه لا توجد خدمة مُعدَّة للنطاق، فاسم المضيف لم يُعدّ على الحافة بعد — الأصل غير معني بالأمر. أضف اسم المضيف بدقة في اللوحة، مع أو بدون www ليطابق سجل DNS، وتزول 503 بمجرد وصول الإعداد إلى الحواف.

هل يمكنني تخزين 503 مؤقتًا؟

لا ينبغي، أو لثوانٍ فقط. 503 مخزَّن مؤقتًا يستمر في رفض الزوار بعد زوال السبب. قدّم استجابات الخطأ بمدة صلاحية (TTL) قصيرة جدًا وفرّغ المسار بمجرد تطبيق الإصلاح.

كيف أوقف 503 تحت الحمل دون خادم أكبر؟

قلّل ما يصل إلى الأصل. خزّن مؤقتًا ما يمكن تخزينه بمدة صلاحية (TTL) تصمد أمام ارتفاع الزيارات، وتأكد من أن مفتاح التخزين المؤقت لا يتجزأ بمعاملات التتبع، وأبقِ تحديد معدل الطلبات على نقاط النهاية التي تجذب زيارات آلية. الخادم الأكبر يرفع السقف؛ التخزين المؤقت يزيل معظم الطلبات التي كانت تضغط عليه.