جديدالجمعة السوداء: خصم ٥٠٪ على دفعتك الأولى
استكشاف أخطاء ووردبريس

502 باد غيتواي

وصل خادم الويب إلى PHP ولم يرد PHP. Nginx أو Apache يبلغان عن محادثة انتهت قبل أن تبدأ.

502 Bad Gateway

الإجابة المختصرة

PHP-FPM إما لأسفل أو عمالها مشغولون. تحقق مما إذا كانت العملية تعمل قبل أي شيء آخر - تجمع توقف وحمام سباحة مشبعة تنتج نفس الصفحة وتحتاج إلى إصلاحات مختلفة.

التشخيص

الأسباب الأرجح أولًا.

افحص القائمة بالترتيب. يتيح لك كل فحص تأكيد السبب أو استبعاده قبل تغيير أي شيء، لأن الحلول تختلف والتخمين يكلّف أكثر من تنفيذ أمر للتحقق.

السببكيفية التحققالإصلاح
PHP-FPM لا يعملحالة الخدمة تقول غير نشطة أو فاشلة. سجل خادم الويب يقول "connect () failed" أو "no live uptrops".ابدأها ، ثم اقرأ لماذا توقفت. عادة ما يكون المسبح الذي خرج من تلقاء نفسه قد فعل ذلك لأن الجهاز نفد من الذاكرة.
كل عامل مشغولالمسبح يعمل، و 502s تأتي في رشقات نارية تحت حركة المرور، ويقول السجل المنبع توقيت بدلا من رفض.العثور على طلب بطيء تحتل العمال. إضافة العمال إلى تجمع جائع من قبل نقطة نهاية بطيئة واحدة يشتري دقائق ، وليس إصلاح.
مسار المقبس أو المنفذ خاطئكل طلب 502s ، باستمرار ، بما في ذلك عناوين URL ذات المظهر الثابت التي تمر عبر PHP. السجل أسماء مأخذ التوصيل غير موجود.نقطة خادم الويب في المقبس تجمع يستمع فعلا على. هذا يظهر مباشرة بعد تغيير إصدار PHP.
عامل تحطمت منتصف الطلبيسجل سجل PHP-FPM خطأً فرديًا أو خروج طفل من إشارة ، موقوتة على الطلب.حدد الامتداد المعني. نادراً ما يكون segfault رمز WordPress - عادة ما يكون إدخال اجتماع ملحق أصلي لم يتوقعه.
الوكيل في الأمام هو توقيت الخروجالأصل يخدم غرامة الصفحة عند الطلب مباشرة ، وفقط عنوان URL العام 502s.ارفع مهلة قراءة الوكيل ، أو اجعل الاستجابة البطيئة أسرع. الأصل ليس هو الشيء الذي يجب تغييره هنا.
الدليل

الإصلاح خطوة بخطوة.

تفترض الأوامر توفر WP-CLI والوصول إلى سطر الأوامر. إن لم يتوفرا، تشرح كل خطوة الإجراء كي تنفذه من لوحة التحكم أو عبر SFTP.

  1. اسأل ما إذا كان PHP يعمل على الإطلاق

    هذه الإجابة تزيل نصف الاحتمالات.

    systemctl status php8.5-fpm --no-pager | head -n 12
  2. اقرأ سجل خادم الويب للحصول على الشكوى المنبع بالضبط

    "رفض الاتصال" و "توقيت المنبع" يعني أشياء مختلفة ويشير إلى أقسام مختلفة أعلاه.

    grep -E 'upstream|502' /var/log/nginx/error.log | tail -n 20
  3. انظر إلى سجل PHP-FPM للحوادث

    يخرج على إشارة، وتحذيرات من أن جميع الأطفال مشغولون، وكلاهما يعيش هنا.

    tail -n 40 /var/log/php8.5-fpm.log
  4. انظر ما يفعله العمال في الواقع.

    إذا كانت جميعها مشغولة بنفس عنوان URL ، فقد وجدت نقطة النهاية البطيئة.

    wp cron event list --fields=hook,next_run_relative --status=due
  5. إعادة تشغيل حمام السباحة بمجرد أن تعرف لماذا

    إعادة التشغيل يزيل الأعراض. القيام بذلك دون قراءة السجل يعني القيام بذلك مرة أخرى غدا.

    systemctl restart php8.5-fpm
على MagicWP

ما تتولاه المنصة عنك.

يحتوي كل موقع على مجموعة PHP-FPM خاصة به في حاوية خاصة به مع حد الذاكرة الخاص به ، لذلك لا يمكن لأحد المواقع التي تستنفد عمالها أن 502 لأي شخص آخر - يبقى الفشل من حيث بدأ. إعادة تشغيل الخدمات هو زر بدلاً من جلسة SSH ، ولأن حجم المسبح يتم قياسه بالخطة بدلاً من مشاركته عبر جهاز كامل ، فإن الجار المشغول ليس أحد الأسباب في هذه القائمة.

الأسئلة الشائعة

الأسئلة الشائعة.

هل 502 خطأي أم خطأ المضيف؟
إما ، والسجل يقول أي. المجمع الذي لا يعمل هو البنية التحتية ؛ تجمع مشبعة باستعلام بطيء واحد هو الكود الخاص بك. التمييز مرئي في أول أمرين أعلاه.
لماذا إعادة تشغيل PHP إصلاحه لفترة من الوقت؟
لأن إعادة التشغيل يحرر كل عامل عالق في وقت واحد. إذا كان الشيء الذي تمسك بهم لا يزال هناك ، فإنهم يملأون مرة أخرى - وهذا هو السبب في أن 502 الذي يعود على جدول زمني يمثل مشكلة في السعة بدلاً من حدوث عطل.
هل يمكن لمكون إضافي واحد أن يتسبب في 502 عبر الموقع بأكمله؟
نعم، إذا كان الطلب بطيئاً في كل صفحة. يحمل كل طلب عامل أثناء انتظاره، وبمجرد أن ينتظر كل عامل، يقف كل شيء آخر خلفهم.
كيف يختلف هذا عن 504؟
502 هي محادثة مكسورة - لم يتم الرد على أي استجابة صالحة. A 504 هي محادثة نفد الوقت. يمكن أن ينتج نفس المسبح المشبع إما ، اعتمادًا على انتهاء المهلة أولاً.
أخطاء مرتبطة

إن لم يكن هذا هو السبب.

قد تبدو هذه الأخطاء متشابهة في المتصفح.