خطای ۵۰۴ یکی از معمولترین خطاهای گروه 5xx است که وبسایتها و بازدیدکنندگان با آن روبرو میشوند. برای بسیاری از وبلاگهای وردپرس و سکوهای تجاری، دانستن شیوه رفع خطاهایی مانند این بسیار حیاتی است.
همانطور که میدانید خود پیام خطای ۵۰۴ یا خطای Gateway Timeout چیز زیادی به شما در اینباره نمیگوید، در واقع یافتن علت خطا timeout سرور کار سختی است. این نوشته به شما در درک عمیق و شیوه عیبیابی خطای ۵۰۴ کمک خواهد کرد.
خطای ۵۰۴ یا Gateway Timeout Error چیست؟
هر باری که وبسایتی را در مرورگر خود مرور میکنید، مرورگر درخواستی را به وبسروری که میزبان وبسایت شما است ارسال میکند. این سرور درخواست را پردازش کرده و با منابع درخواست شده پاسخ میدهد.
پاسخ سرور شامل یکی از کدهای وضعیت HTTP است تا از این طریق وضعیت پاسخ به مرورگر را روشن کند. البته تمام کدهای وضعیت HTTP وضعیت خطا را نشان نمیدهند. برای مثال کد وضعیت ۲۰۰ به معنای این است که درخواست با موفقیت پردازش شده و همهچیز خوب است.
کدهای وضعیت کلاس 5xx نشان از مشکلی در ارتباط با سرور دارند که سرور از رخداد آن آگاه است و نمیتواند پاسخ مشتری را انجام دهد. در این نوشته به صورت خلاصه در خصوص کدهای وضعیت HTTP صحبت کردیم.
به صورت رسمی پنج کد در کلاس 5xx قرار میگیرند (۵۰۰, ۵۰۱, ۵۰۲, ۵۰۳, ۵۰۴). ممکن است که کدهای غیررسمی نیز به این لیست افزوده شوند (۵۰۶, ۵۰۷, ۵۰۹, ۵۲۰ و …).
IETF خطای ۵۰۴ را اینگونه تعریف میکند:
کد وضعیت ۵۰۴ (Gateway Timeout) نشان میدهد که سرور در حالیکه به عنوان یک مدخل یا پراکسی عمل میکند، پاسخ زمانبندی شده از سرور دست بالایی را که برای تکمیل درخواست بدان نیازمند است را دریافت نمیکند.
اگر بخواهیم واضحتر بگوییم، این خطا زمانی رخ میدهد که دو سرور درگیر پردازش یک درخواست هستند و سرور اول (نوعا سرور اصلی) دچار اتمام زمان انتظار برای پاسخ از سرور دوم میشود (سرور دست بالایی).
خطای ۵۰۴ به اشکال مختلف به نمایش در میآید. خطای ۵۰۴ یا خطای Gateway Timeout مشابه خطای ۵۰۲ Bad Gateway است که نشان میدهد که سرور اول پاسخ نامعتبری از سرور دوم دریافت کرده است.
انواع خطای ۵۰۴ Gateway Timeout
مرورگر تنها خطای ۵۰۴ را درست به مانند خطاهای دیگر نمایش میدهد. از آنجاییکه سیستمهای عامل مختلف، وبسرورهای متنوع، مرورگرها و عاملهای کاربری متفاوتی وجود دارند، ممکن است که به اشکال مختلفی به نمایش درآید.
در زیر برخی از انواع خطای ۵۰۴ را میبینید که ممکن است با آن برخورد کنید:
- ۵۰۴ Gateway Timeout
- ۵۰۴ Gateway Timeout NGINX
- NGINX 504 Gateway Timeout
- Gateway Timeout Error
- Error 504
- HTTP Error 504
- HTTP Error 504 — Gateway Timeout
- HTTP 504
- ۵۰۴ Error
- Gateway Timeout (504)
- This page isn’t working — Domain took too long to respond
- ۵۰۴ Gateway Time-out — The server didn’t respond in time
- صفحه خالی سفید
تمام پاسخهای خطای بالا، اگرچه از نظر لغوی متفاوت هستند اما به خطای ۵۰۴ اشاره میکنند. وبسرورها و وبسایتها میتوانند شیوه نمایش خطای ۵۰۴ به کاربران را سفارشیسازی کنند.
اثر خطای ۵۰۴ یا خطای Gateway Timeout بر سئو
تمام خطاهای 5xx از بارگیری صفحه مدنظر کاربر جلوگیری میکنند. از این رو موتورهای جستجو مانند گوگل این خطاها را خیلی جدی میگیرند. اگر این خطا برای مدت طولانی دایمی باشد، ممکن است موجب از ایندکس خارج شدن صفحه وب از نتایج موتور جستجو شود.
برای مثال، وقتیکه اسپایدارهای گوگل هنگام خزیدن با خطای ۵۰۳ مواجه میشوند متوجه میشوند که این مشکل، مشکلی موقتی است و اغلب اوقات در وضعیت نگهداری وبسایت وردپرس نشان داده میشود. بنابراین تلاش میکنند که زمانی دیگر کار مرور آن صفحه را انجام دهند.
خطای ۵۰۴ لزوما موقتی نیست چرا که دلایل متفاوتی میتواند داشته باشد. اگر وبسایت شما برای دقایقی کند شود و اسپایدارها تلاش به خزیدن چندبار طی یک دقیقه کنند، از نسخه کش شده آن استفاده میکنند.
اما اگر وبسایت شما برای بیش از ۶ ساعت از دسترس خارج شود، گوگل خطای ۵۰۴ را به عنوان خطای جدی در سطح کل وبسایت در نظر میگیرد که نیاز به رفع فوری آن است. این اتفاق میتواند تاثیر جدی منفی بر روی سئو وبسایت شما بگذارد.
دلایل خطای ۵۰۴ یا خطای Gateway Timeout
از آنجاییکه خطای ۵۰۴ به دلیل timeout شدن بین سرورها رخ میدهد، این مشکل از دستگاه مشتری یا ارتباط اینترنتی ناشی نمیشود.
خطای ۵۰۴ نشان میدهد که وبسرور به مدت طولانی در انتظار پاسخ از سرور دیگر بوده است. دلایل زیادی برای این timeout شدن وجود دارد: سرور دیگر به درستی عمل نکند، سربار شده باشد یا از دسترس خارج شده باشد.
سرور دیگر همیشه یک سرور خارجی نیست (مثلا CDN یا مدخل API). میتواند موجودیتی مانند سرور در سرور وب اصلی باشد.
چگونه خطای ۵۰۴ یا خطای Gateway Timeout را رفع کنم؟
بدون دانستن جزییات دقیق در خصوص وبسایت وردپرس مانند پیکربندی سرور، پلن هاست، افزونههای نصب شده و ترافیک دریافتی، سردرآوردن در خصوص علت خطای ۵۰۴ میتواند غیرممکن باشد.
از آنجاییکه متغیرهای بسیاری در این اتفاق دخیل هستند، بایستی کار عیبیابی را از سمت مشتری شروع کنید که البته به ندرت این اتفاق از این سمت میافتد و سپس به سمت مسایل سمت سرور بروید که معمولا دلایل اصلی رخداد خطای ۵۰۴ محسوب میشوند.
تلاش به بارگذاری دوباره صفحه
یکی از ابتداییترین تلاشها هنگامی که با خطای ۵۰۴ مواجه میشوید این است که پس از چند دقیقه تامل اقدام به رفرش کردن یا بارگذاری دوباره صفحه کنید.
میتوانید صفحه مدنظر خود را در مرورگری متفاوت باز کنید. به طوریکه احتمال بسیار زیاد خطای ۵۰۴ به دلیل سربار موقتی سرور است، استفاده از این راهحل میتواند برای شما کارگشا باشد.
اگر انتظار و رفرش صفحه وبسایت نتواند مساله خطای ۵۰۴ را رفع کند، میتوانید از طریق کاربرهای دیگر از داون نبودن وبسایت خود اطمینان یابید. البته ابزارهای خوب دیگری نیز برای اینکار وجود دارند مانند Down for Everyone or Just Me و Is It Down Right Now.
ریبوت کردن دستگاههای شبکه
برخی اوقات چنین مسایلی از دستگاههای شبکه مانند مودم یا روتر ناشی میشود که میتواند منجربه خطای ۵۰۴ شود. ریبوت کردن این دستگاهها میتواند به حل این مشکل کمک کند. البته در نظر داشته باشید که خاموش کردن تمام این دستگاههای شبکه و رعایت ترتیب نیز امریست بسیار مهم.
مسایل مربوط به DNS
خطای ۵۰۴ میتواند به دلیل مسایل مربوط به DNS در سمت سرور یا سمت مشتری رخ دهد. محتملترین دلیل مساله DNS سمت سرور FQDN است. معمولا این اتفاق زمانی رخ میدهد که وبسایت وردپرس شما به تازگی به سرور یا میزبان جدیدی انتقال داده شده باشد. از این رو مهم است که برای اعمال تغییرات در DNS به مدت ۲۴ ساعت تامل کنیم.
برای بررسی این مساله میتوانید از whatsmydns.net یا DNSMap برای بررسی وضعیت DNS وبسایت در سراسر جهان استفاده کنید.
برای تعمیر مسایل DNS در سمت مشتری میتواند از فلاش کردن کش DNS محلی استفاده کنید. اینکار درست به مانند پاک کردن کش مرورگر است به جز اینکه فلاش کردن کش DNS از طریق سیستم عامل صورت میگیرد.
اگر از ویندوز استفاده میکنید میتوانید کش DNS را با باز کردن Command Prompt و درج دستور زیر پاک کنید:
ipconfig /flushdns
پس از درج این دستور و زدن دکمه اینتر بایستی با عبارت Successfully flushed the DNS resolver Cache روبرو شوید.
غیرفعال کردن موقت CDN وبسایت
برخی اوقات این مساله میتواند به دلیل مشکلاتی در رابطه با CDN باشد. اگر سرور اصلی وبسایت از دسترس خارج شده باشد اغلب CDNها تلاش میکنند که صفحه کامل وبسایت را از طریق کش فراخوانی کنند.
اما اغلب CDNها قادر به فعالسازی این ویژگی به صورت پیشفرض نیستند چرا که کش محتوای پویا در اغلب وبسایتها کاریست بسیار پیچیده.
راهی سادهتر این است که CDN را به صورت موقت غیرفعال کنید. برای مثال، اگر از افزونه وردپرس CDN Enabler استفاده میکنید تا محتوای وبسایت خود را به نشانیهای CDN لینک کنید، میتوانید افزونه را غیرفعال کرده و وبسایت را دوباره بارگذاری کنید.
خطای ۵۰۴ به دلیل مسایل مربوط به سرور
مسایل مربوط به سرور یکی از معمولترین دلایل ایجاد خطای ۵۰۴ بر روی وبسایت است. از آنجاییکه اغلب وبسایتهای وردپرس بر روی وبسرورهای Nginx یا Apache میزبانی میشوند بنابراین این سرورها منتظر پاسخ از چیزی هستند و timeout نیز در این فرآیند امریست محتمل.
وبسایتهایی با ترافیک بالا و وبسایتهای تجاری بیشتر در معرض خطای ۵۰۴ قرار دارند چرا که سرور به دلیل بیشمار درخواست غیرقابل کش شدن سربار میشود. این مساله میتواند برای بسیاری از وبسایتها از جمله حتا وبلاگها مسالهساز باشد. بسیاری از میزبانها از شما میخواهند تا از پلنهای بهتر برای رفع این مساله استفاده کنید که در اغلب مواقع نیز ضرورتی ندارد.
اغلب وبسایتهای وردپرس از میزبانهایی با منابع مشترک استفاده میکنند که همین برای وبسایتهای پربازدید میتواند منجربه خطای ۵۰۴ شود.
زیرساخت کند سرور
سروری که شما برای میزبانی وبسایت وردپرس خود استفاده میکنید ممکن است که منابع کافی برای مدیریت بار وبسایت شما را نداشته باشد. تنها راه حل برای این اتفاق استفاده از سرور یا میزبان با کیفیتتر برای وبسایت است.
مسایل مربوط به فایروال
فایروال سرور شما ممکن است که خطاهایی داشته باشد یا به صورت درست پیکربندی نشده باشد. شاید چند قوانین مربوط به فایروال سرور باعث ممانعت از ارتباط درست با سرور شوند. برای بررسی این مساله بایستی لاگهای خطای سرور را بررسی کنید.
مسایل مربوط به ارتباط شبکه
مسایل مربوط به ارتباط شبکه بین پراکسیسرور و وبسرور میتواند باعث ایجاد تاخیر در پاسخ درخواستهای HTTP شود.
اسپم، باتها یا حملات DDoS
مهاجمین میتوانند با ارسال درخواستهای زیاد باعث ایجاد مشکلاتی برای وبسرور شوند یا اینکه درخواستهای با میزان مصرف منابع بالا ارسال کنند. اگر وبسایتتان توسط باتها اسپم میشود یا اینکه تحت حمله DDoS قرار دارد ممکن است هنگام پردازش درخواست کاربر با خطای ۵۰۴ مواجه شود.
میتوانید ترافیک سرور را مرور و تحلیل کرده تا به الگوهایی در خصوص ترافیک غیرعادی دست یابید.
در نظر داشته باشید که وبسایتهای فروشگاهی وردپرس که از ووکامرس استفاده میکنند درخواستهای زیاد دستنیافتنی برای ویژگیهایی مانند سبد خرید یا روند پرداخت ایجاد میکنند.
پایگاهداده معیوب وردپرس
برخی اوقات خطای ۵۰۴ میتواند به دلیل پایگاهداده معیوب وردپرس باشد. نوعا این اتفاق به دلیل جداول یا فایلهای خراب در پایگاهداده رخ میدهد. برخی اوقات این مساله میتواند باعث ایجاد مسایل امنیتی حساس مانند هک شدن پایگاهداده یا وبسایت شود.
تعمیر پایگاهداده وردپرس بستگی به مشکلی دارد که با آن درگیر هستید. افزونههایی مانند WP-DBManager عیبیابی مشکلات پایگاهداده و تعمیر آنها را آسان کرده است.
بررسی افزونهها و پوستههای وبسایت
در اغلب موارد افزونهها و پوستهها باعث ایجاد خطای ۵۰۴ نمیشوند. اما شانس اندکی برای رخداد این اتفاق همچنان وجود دارد که به دلیل وارد صف کردن درخواستهای کش نشده زیاد که توسط افزونه/پوسته ایجاد میشود است.
دلیل واضح این اتفاق میتواند ووکامرس باشد که قابلیت فروشگاهی شدن را به وبسایت وردپرس شما می افزاید.
سادهترین راه برای عیبیابی این اتفاق غیرفعال کردن تمام افزونهها است. به خاطر داشته باشید که با غیرفعال کردن افزونههای وردپرس دادههایی را از دست نخواهید داد.
بررسی گزارشات خطا
با مشاهده گزارشات یا لاگهای خطا error logs میتوانید سرنخهایی در خصوص دلیل خطای ۵۰۴ بر روی وردپرس خود بیابید.
اگر میزبان شما از این ابزار پشتیبانی نمیکند میتوانید حالت عیبیابی را بر روی وردپرس خود فعال کنید. با استفاده از این روش میتوانید وضعیت عیبیابی بر روی وردپرس را فعال کنید. اینکار باعث ذخیره شدن خطاها در فایلی به نام debug.log در پوشه /wp-content/ وردپرستان میشود. اگر چنین فایلی را نمیبینید میتوانید آن را بسازید.
دیدگاهتان را بنویسید