504 بوابة المهلة
PHP كان لا يزال يعمل عندما تخلى خادم الويب عن الانتظار. لم يتعطل شيء - استغرق الأمر ببساطة وقتًا أطول مما تسمح به المهلة.
504 Gateway Timeout
شيء ما في الطلب بطيء ، ورفع المهلة يعني فقط الانتظار لفترة أطول لنفس الصفحة. حدد الخطوة البطيئة أولاً: استعلام أو مكالمة واجهة برمجة تطبيقات صادرة أو استيراد يعمل داخل طلب ويب.
الأسباب الأرجح أولًا.
افحص القائمة بالترتيب. يتيح لك كل فحص تأكيد السبب أو استبعاده قبل تغيير أي شيء، لأن الحلول تختلف والتخمين يكلّف أكثر من تنفيذ أمر للتحقق.
| السبب | كيفية التحقق | الإصلاح |
|---|---|---|
| طلب HTTP صادر بدون مهلة | يستدعي عنوان URL البطيء طرفًا ثالثًا - فحص الترخيص ، خلاصة ، بوابة دفع. إنه سريع عندما تكون هذه الخدمة سريعة. | تعيين مهلة واضحة على المكالمة الصادرة وذاكرة التخزين المؤقت للاستجابة. ينتظر WordPress لفترة أطول افتراضيًا أكثر من أي زائر. |
| استعلام بدون فهرس خلفه | الصفحة البطيئة هي أرشيف تمت تصفيته أو تقرير، وتعرض قاعدة البيانات نفس الاستعلام في الجزء العلوي تحت التحميل. | أضف الفهرس الذي يحتاج إليه الاستعلام. المسح الضوئي الذي كان جيدًا في عشرة آلاف صف هو مهلة عند مليون. |
| استيراد أو تصدير يعمل في طلب ويب | المهلة تحدث فقط على إجراء المشرف الذي بدأته، ويفشل في نفس الوقت تقريبا المنقضي كل محاولة. | نقل المهمة إلى WP-CLI أو تشغيل خلفية مجزأة. علامة تبويب المتصفح هي المكان الخطأ للعمل الذي يقاس بالدقائق. |
| تتراكم Cron على تحميلات الصفحة | ويهبط التأخير على عناوين URL العادية للواجهة الأمامية ، بشكل متقطع ، على موقع يحتوي على قائمة أحداث طال انتظارها. | تعطيل WP-Cron وقيادته من جدولة النظام ، لذلك يتوقف العمل المجدول عن تحميله على أي زائر يصل أولاً. |
| المهلة قصيرة جدا حقا للعمل. | كل شيء أعلاه مستبعد والعملية طويلة بشكل شرعي - نسخة احتياطية كبيرة ، تحويل وسائط كبير. | رفع المهلة لهذا المسار فقط. رفعه على الصعيد العالمي يزيل السقف الذي يوقف طلبًا سيئًا واحدًا يشغل عاملًا. |
الإصلاح خطوة بخطوة.
تفترض الأوامر توفر WP-CLI والوصول إلى سطر الأوامر. إن لم يتوفرا، تشرح كل خطوة الإجراء كي تنفذه من لوحة التحكم أو عبر SFTP.
معرفة أي URL بطيء
سجل الوصول يسجل كم من الوقت استغرق كل طلب. فرز حسب ذلك والإجابة عادة ما تكون سطر واحد.
awk '{print $NF, $7}' /var/log/nginx/access.log | sort -rn | head -n 10اسأل قاعدة البيانات عن الوقت الذي تقضيه في
يظهر استعلام طويل الأمد هنا بينما لا تزال الصفحة قيد التحميل.
mysql -e 'SHOW FULL PROCESSLIST;' | head -n 20
تحقق مما إذا كان كرون هو الراكب
وتعني القائمة التي طال انتظارها أن الزوار يديرون العمل المقرر.
wp cron event list --status=due --fields=hook,next_run_relative
نقل وظيفة طويلة من الطلب
نفس الاستيراد الذي مرات في المتصفح عادة ما يكمل من سطر الأوامر، لأن لا شيء ينتظر على ذلك.
wp import large-file.xml --authors=create
الآن فقط، النظر في المهلة
وارتقاء به إلى الطريق الذي يحتاج إليه بدلا من كل مكان.
wp config set WP_MAX_MEMORY_LIMIT '512M'
ما تتولاه المنصة عنك.
يتم تشغيل العمل المجدول على جدولة النظام الحقيقي بدلاً من أي زائر يحدث للوصول ، لذلك السبب العرضي الأكثر شيوعًا للصفحة البطيئة غائب من البداية. الوظائف الطويلة لها حدودها الخاصة في سياق cron بدلاً من استعارة تلك المخصصة لطلبات الويب ، والحاويات في الموقع تعني أن الطلب الذي يمتد لفترة طويلة يشغل العاملين لديك فقط.
الأسئلة الشائعة.
هل يجب أن أزيد المهلة؟
لماذا يتم تحميل نفس الصفحة بشكل جيد في بعض الأحيان؟
أوقات الاستيراد الخاصة بي في نفس النقطة بالضبط في كل مرة.
هل 504 سببه اتصال زواري؟
إن لم يكن هذا هو السبب.
قد تبدو هذه الأخطاء متشابهة في المتصفح.