سه شنبه, ۲ مرداد, ۱۴۰۳

رفع خطای ۵۰۴ Gateway Timeout + انجینکس

FIX 504 GATEWAY TIMEOUT ERROR + NGINX

هیچ چیز بدتر و نا امیدکننده‌تر از این نیست که در وبسایت خود به یک صفحه خالی با یک خطا برخورد کنید. از جمله این خطاها می‌توان به ۵۰۲ bad gateway، white screen of death و error establishing a database connection اشاره کرد. در تجارت الکترونیک این خطاها باعث کاهش درآمد می‌شود. مثلا مشتری‌ها نمی‌توانند فرآیند خرید آنلاین را تکمیل کنند. در این مقاله می‌خواهیم در مورد خطا ۵۰۴ Gateway Timeout و راه‌های حل آن بحث کنیم. با ما همراه باشید تا ببینید چه چیزی باعث ایجاد این خطا می‌شود و چه کارهایی می‌توان برای جلوگیری از آن انجام داد.

خطا ۵۰۴ Gateway Timeout چیست؟

در ابتدا لازم است توضیح دهیم که چطور این خطاها ایجاد می‌شوند. زمانی که می‌خواهید از یک سایت بازدید کنید، مرورگر شما درخواستی به آن سایت ارسال می‌کند. سرور سایت درخواست شما را دریافت و بعد از پردازش آن، ریسورس‌ها همراه با سرانداز HTTP (HTTP header) و کد وضعیت HTTP (HTTP status code) را برای شما ارسال می‌کند. این کد وضعیت به شما می‌گوید که آیا فرآیند درست پیش می‌رود یا خیر. و همیشه هم این کدها حاوی خبرهای بد نیستند. مثلا کد ۲۰۰ می‌گوید که همه چیز خوب پیش رفته است.

خطاهای وضعیت از نوع ۵۰۰ شامل خطاهای ۵۰۱، ۵۰۲، ۵۰۳، ۵۰۴ و غیره هستند که معنای آنها اندکی با هم فرق دارد. این خطاها می‌گویند که سرور درخواست شما را دریافت کرده ولی فرآیند ذکر شده در بالا را به طور کامل انجام نداده است. خطای ۵۰۴ Gateway Timeout به طور خاص به این معنی است که «سروری که نقش گذرگاه را بازی می‌کند، منتظر سرور دیگری بوده ولی جوابی از آن سرور دریافت نکرده است.» این حالت زمانی پیش می‌آید که دو سرور درگیر انجام یک عملیات باشند.

رفع خطا 504 Gateway Timeout + انجین اکس

گونه‌های مختلف خطا ۵۰۴ Gateway Timeout

به خاطر تفاوت‌هایی که در مرورگرها، سرورها و سیستم‌های عامل وجود دارد، خطا ۵۰۴ 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)
  • “۵۰۴ Gateway Time-out – The server didn’t respond in time”
  • یا یک صفحه خالی

بعضی از کمپانی‌ها هم یک شکل مخصوص برای این نمایش این خطا تهیه کرده‌اند.

رفع خطا 504 Gateway Timeout + انجین اکس

نقش خطا ۵۰۴ در سئو

بر خلاف خطاهای ۵۰۳ که به گوگل می‌گوید که در زمان دیگری به سایت سر بزند، خطا ۵۰۴ Gateway Timeout، اگر سریع بر طرف نشود، بر سئو تاثیر منفی می‌گذارد. اگر سایت شما برای ۱۰ دقیقه از کار افتاده باشد ولی برای مدتی نسبتا طولانی به شکل مناسبی عمل کرده باشد سایت می‌تواند از کش دلیور شود. اصلا ممکن است گوگل تا قبل از بک‌آپ به سراغ فراخوانی مجدد سایت شما نرود. ولی اگر سایت شما برای مدتی بیشتر از ۶ ساعت خراب باشد، ممکن است گوگل تشخیص دهد که خطا ۵۰۴ اتفاق افتاده است. و این بر رنکینگ سایت شما تاثیر خواهد گذاشت. اگر نگران تکرار خطا ۵۰۴ Gateway Timeout هستید، باید ببینید که اصولا این نوع خطاها به چه علتی اتفاق می‌افتند. در ادامه به بررسی این موضوع می‌پردازیم و بعضی از راه حل‌ها را معرفی خواهیم کرد.

چگونه خطا ۵۰۴ Gateway Timeout را بر طرف کنیم

برای رفع خطا ۵۰۴ Gateway Timeout از کجا باید شروع کرد و چه چیز را اصلاح نمود؟ اگر تا به حال سابقه رفع این خطا را نداشته‌اید، شروع کار ممکن است خیلی سخت باشد. خطا ۵۰۴ Gateway Timeout در حالت کلی ناشی از مشکل شبکه/ سرور است. هر چند این نیز ممکن است که مشکل از طرف مشتری یا افزونه هایی باشد که از طرف شخص ثالث تهیه شده است. ما هر دو حالت را مختصرا بررسی می‌کنیم. خواهید دید که علت‌های معمول این خطا چیست و چگونه می‌توان آنها را بر طرف کرد.

  1. صفحه را دوباره لود کنید

اولین و ساده‌ترین کاری که در هنگام مواجهه با خطا ۵۰۴ Gateway Timeout انجام می‌دهید این است که چند دقیقه صبر می‌کنید و سپس صفحه را ریفرش می‌کنید. ممکن است هاست یا سرور سنگین شده باشد و بالا آمدن سایت مورد نظر شما به زمان احتیاج داشته باشد. در زمانی که منتظر هستید، می‌توانید یک مرورگر دیگر را نیز امتحان کنید. شاید مشکل از مرورگر باشد.

راه دیگر این است که آدرس سایت را در downforeveryoneorjustme.com وارد کنید تا ببینید آیا مشکل از طرف وبسایت است یا از طرف شما. این ابزار کد وضعیت ارسال شده از طرف سرور را بررسی می‌کند. هر چیزی غیر از کد وضعیت ۲۰۰ که در بالا به آن اشاره کردیم نشان دهنده یک خطا می‌باشد.

رفع خطا 504 Gateway Timeout + انجین اکس

  1. غیر فعال کردن پروکسی

گاهی اوقات استفاده از سرویس پروکسی باعث ایجاد خطا ۵۰۴ Gateway Timeout می‌شود. معمولا این اتفاق به ندرت پیش می‌آید ولی ممکن است یکی از این سرویس‌ها بدون اطلاع شما برای شما فعال شده باشد.

رفع خطا 504 Gateway Timeout + انجین اکس

  1. مشکل DNS

خطا ۵۰۴ Gateway Timeout ممکن است به خاطر مشکل DNS باشد. دو حالت در اینجا وجود دارد؛ در حالت اول خطا از جانب سرور است، مثلا نام دامنه به IP صحیح برگردانده نشده باشد. اگر به تازگی سایت خود را به یک هاست انتقال داده باشید، برای انتشار (propagation) کامل آن گاها لازم است تا ۲۴ ساعت منتظر بمانید. این زمان به مقدار اختصاص داده شده به TTL بستگی دارد. برای اینکه ببینید DNS شما انتشار یافته است یا خیر می‌توانید از ابزار رایگان DNSMap استفاده کنید.

رفع خطا 504 Gateway Timeout + انجین اکس

در حالت دوم مشکل از طرف مشتری است. در این حالت باید کش DNS را پاک کنید. این کار مانند پاک کردن کش مرورگر است. برای انجام این کار در ویندوز، Command Prompt را باز و دستور زیر را وارد کنید:

ipconfig /flushdns

رفع خطا 504 Gateway Timeout + انجین اکس

اگر کار به درستی انجام شود باید پیام “Successfully flushed the DNS resolver Cache” را مشاهده کنید.

کاربران macOS باید دستور زیر را در ترمینال وارد کنند.

dscacheutil –flushcache

البته در این مورد بعد از انجام موفقیت آمیز کار، پیامی به کاربر نمایش داده نمی‌شود.

نکته آخر اینکه می‌توانید سرور DNS را تغییر دهید. به طور پیشفرض سرورهای DNS به وسیله ISP شما تعیین می‌شود. ولی شما می‌توانید به طور موقت یکی از سرورهای عمومی مانند Googles را انتخاب کنید. به خاطر اعتبار Googles، بعضی‌ها ترجیح می‌دهند از آن برای طولانی مدت استفاده کنند.

  1. غیر فعال کردن CDN

ممکن است مشکل از طرف CDN  (content delivery network) باشد. اگر CDN را شخص ثالث در اختیار شما قرار داده است، بهتر است موقتا آن را غیر فعال کنید. ما معمولا از افزونه CDN enabler استفاده می‌کنیم. می‌توان به سادگی آن را برای مدتی غیر فعال کرد و سایت را تست کرد. اگر به داشبورد سایت خود دسترسی ندارید، از طریق SFTP وارد سایت خود شوید و نام پوشه افزونه را به cdn-enabler_old تغییر دهید. این کار به طور موقت اتصال CDN را قطع می‌کند. همین مسئله در مورد افزونه WP Rocket و سایر افزونه هایی که به CDN مربوط می‌شود نیز برقرار است.

رفع خطا 504 Gateway Timeout + انجین اکس

همچنین ممکن است مشکل از طرف ارائه دهندگان سرویس‌های کاملا پروکسی مانند Cloudflare یا Sucuri (به خاطر فایروال‌های اضافی آنها) باشد. ما متوجه شدیم که هر از چند گاهی این مشکل در سرویس رایگان Cloudflare پیش می‌آید. متاسفانه از آنجایی که این سرویس کاملا پروکسی است نمی‌توان به سادگی آن را غیر فعال کرد.

البته قبل از آنکه مشکل را گردن Cloudflare بیاندازید باید به این نکته توجه کنید که دو حالت مختلف از خطا ۵۰۴ Gateway Timeout داریم. خطای اول که به صورت زیر نمایش داده می‌شود نشان می‌دهد که مشکل از طرف Cloudflare است و شما باید از آنها درخواست پشتیبانی کنید یا صفحه وضعیتشان را چک کنید. معمولا خودشان در جریان مشکل هستند و دارند تلاش می‌کنند که آن را بر طرف کنند.

رفع خطا 504 Gateway Timeout + انجین اکس

حالت دوم به صورت زیر است و بدین معنیست که مشکل از طرف هاست وردپرس شماست شماست. برای رفع این مشکل به توصیه شماره ۵ در پایین رجوع کنید.

رفع خطا 504 Gateway Timeout + انجین اکس

آپلود در Cloudflare

یکی دیگر از علت‌های خطای ۵۰۴ Gateway Timeout، اندازه فایلی است که می‌خواهید آن را آپلود کنید. در طرح رایگان Cloudflare حجم فایلی که می‌خواهید آن را آپلود کنید نمی‌تواند بیشتر از ۱۰۰ مگابایت باشد. هر چند گاها دیده می‌شود که فایل‌هایی با حجم کمتر از ۱۰۰ مگابایت هم دچار مشکل می‌شوند. در این حالت برای اینکه ببینید مشکل از طرف هاست شمایت یا از طرف Cloudflare، با استفاده از فایل هاست DNS یک مسیر جنبی بسازید و دوباره فایل مورد نظر را آپلود کنید  یا اینکه به طور موقت Cloudflare را غیر فعال کنید.

همیشه توصیه می‌شود که اگر از Cloudflare در وردپرس استفاده می‌کنید، افزونه هایی مربوط به آن را که در آدرس https://wordpress.org/plugins/cloudflare وجود دارد، نصب کنید.

  1. مشکل سرور

مشکل سرور یکی از مهترین دلایل بروز خطای ۵۰۴ Gateway Timeout در سایت‌های وردپرسی می‌باشد. به طور ساده مسئله در اینجا این است که Nginx یا Apache منتظر یک پاسخ بوده‌اند ولی چیزی دریافت نکردند.

خطاهای ۵۰۴ معمولا در سایت‌های تجاری و سایت‌هایی با ترافیک بالا مانند WooCommerce اتفاق می‌افتد. چون در این سایت‌ها ممکن است سرور متحمل اضافه بار شوند. اگر چه دیده شده که این مشکل برای سایت‌هایی با ترافیک پایین هم به وجود می‌آید. بسیاری از هاست‌ها در واکنش به این خطا از مشتریان خود می‌خواهند که طرح خود را آپگریت کنند. هر چند احتمالا با انجام این کار مشکل حل می‌شود، ولی انجام آن برای رفع مشکل، همیشه ضروری نیست.

در Kinsta برای هر سایت از یک محفظه نرم‌افزاری LXC استفاده می‌شود. در واقع هر سایت در یک محفظه نرم‌افزاری منزوی قرار داده شده است که تمام ریسورس‌های نرم‌افزارهای مورد نیاز (Linux, NGINX, PHP, MySQL) را در خود دارد. این بدین معنیست که نرم‌افزاری که هر سایت را اجرا می‌کند مخصوص همان سایت است و با سایت دیگری به اشتراک گذاشته نمی‌شود. این مزیت در هاست‌های عمومی وردپرس کمتر دیده می‌شود و بنابراین افزایش ترافیک، احتمال رخ دادن خطای ۵۰۴ را افزایش می‌دهد. حتی اگر ترافیک مربوط به سایر سایت‌های هاست باشد.

علاوه بر این در نت افراز زیر ساخت‌هایی را طراحی کرده‌ایم که به ما توانایی مدیریت هزاران اتصال همزمان را می‌دهد. حتی پایگاه داده‌های MySQL هم در یک هاست محلی (و نه در یک سرور خارجی) نگه‌داری می‌شود. این باعث می‌شود که تاخیر در ارتباط بین ماشین‌ها وجود نداشته باشد و درخواست‌ها با سرعت بالایی پیگیری شود. مشتری‌هایی که از یک هاست دیگر به نت افراز آمده‌اند، این افزایش سرعت را کاملا حس کرده‌اند.

علاوه بر اضافه بار، مشکلات دیگری نیز در سرور وجود دارد که باعث ایجاد خطای ۵۰۴ می‌شوند:

  • کندی سرور: کاملا ممکن است که سرور سایت شما کند باشد. در این صورت شما شاهد خطای ۵۰۴ خواهید بود.
  • تعداد کم کارگران PHP: کارگران PHP (PHP workers) برای اجرا کردن کدها در سایت‌های وردپرسی استفاده می‌شوند. زمانی که درخواست لود شدن سایت را می‌دهید، این احتمال وجود دارد که کارگران PHP مشغول کارهای دیگر باشند. در این صورت ممکن است درخواست شما نادیده گرفته شود. می‌توانید از هاست خود بخواهید که تعداد کارگران PHP شما را افزایش دهد.
  • مشکل فایروال: ممکن است فایروال سرور شما خطا داشته باشد. پیکربندی نامناسب یا قوانینی که جلوی اتصال صحیح را می‌گیرند از جمله مشکلات فایروال هستند.
  • اتصال شبکه: اگر مشکلی در اتصال سرور پروکسی و سرور وب وجود داشته باشد، پاسخ به درخواست HTTP با تاخیر مواجه خواهد شد.
  • ایست HTTP: زمانی پیش می‌آید که اتصال بین مرورگر و سرور وب برای مدتی طولانی باز مانده باشد. این مشکل مخصوصا هنگام استفاده از ورودی‌های وردپرس (WordPress imports) پیش می‌آید . یکی از راه حل‌های این مشکل استفاده از اینترنت پر سرعت است. همچنین می‌توانید از افزونه ای مانند WordPress Importer که از WP-CLI پشتیبانی می‌کند نیز کمک بگیرید و اتصال HTTP را دور زده و ورودی‌ها را مستقیم در سرور اجرا کنید.

اگرچه خطای ۵۰۴ خیلی شبیه به خطای ۵۰۳ یا ۵۰۲ است، ولی در اصل این خطاها با هم متفاوتند.

اگر نگران این هستید که این خطاها در آینده برای شما اتفاق بیافتد، پیشنهاد می‌کنیم که updown.io را نصب کنید. این ابزار به محض رخ دادن خطا شما را در جریان قرار می‌دهد. می‌توانید این ابزار را طوری تنظیم کنید تا در بازه‌های زمانی زیر وبسایت شما را چک کند.

  • ۱۵ ثانیه
  • ۳۰ ثانیه
  • ۱ دقیقه
  • ۲ دقیقه
  • ۵ دقیقه
  • ۱۰ دقیقه

اگر سایت مشکلی داشته باشد، ایمیلی به شکل زیر برای شما ارسال می‌شود.

رفع خطا 504 Gateway Timeout + انجین اکس

اگر از هاست‌های عمومی با سرورهای شلوغ استفاده می‌کنید، این ابزار بسیار برای شما مفید خواهد بود. از این طریق خواهید دانست که سایت شما چند وقت به چند وقت به مشکل برخورد می‌کند. و بنابراین به اهمیت استفاده از یک هاست خوب پی می‌برید.

  1. اسپم، بات و حمله DDoS

کاملا ممکن است که سایت شما دچار اسپم، بات و یا حمله DDoS شده باشد. این مشکلات گاها منجر به اختلال در کار سرور و در نتیجه بروز خطای ۵۰۴ Gateway Timeout می‌شوند. می‌توانید به تحلیل‌گر سرور خود نگاه کنید و ببینید آیا واقعا مشکلی در آنجا رخ داده است یا خیر.

رفع خطا 504 Gateway Timeout + انجین اکس

  1. افزونه ها و تم‌های خود را بررسی کنید

خیلی‌ها می‌گویند که افزونه ها و تم‌های تهیه شده از طرف شرکت‌های ثالث باعث ایجاد خطا ۵۰۴ Gateway Timeout نمی‌شوند. در واقع در اکثر مواقع هم همینطور است. ولی ما به تجربه دیده‌ایم که وقتی درخواست یک افزونه با سرعت پایینی انجام شود تعداد پروسه های PHP بیشتری را درگیر خود کرده و باعث ایجاد وقفه می‌شود. زمانی که همه پروسه ها PHP مشغول باشند، درخواست‌های قدیمی‌تر رد می‌شود و خطای ۵۰۴ ایجاد خواهد شد. در اینجا تفاوت خطا ۵۰۴ Gateway Timeout و ۵۰۲ این است که در خطای ۵۰۲ درخواست بعد از یک وقفه ۶۰ ثانیه‌ای رد می‌شود.

غیر فعال کردن افزونه در این حالت می‌تواند به رفع خطا ۵۰۴ Gateway Timeout کمک کند. به یاد داشته باشید که این کار باعث از بین رفتن داده‌های شما نمی‌شود. اگر به ادمین دسترسی داشته باشید، می‌توانید به سادگی عبارت “Plugins” را جستجو کرده و آن را از طریق منوی Bulk Actions غیر فعال کنید. در این صورت تمام افزونه غیر فعال خواهند شد.

رفع خطا 504 Gateway Timeout + انجین اکس

اگر مشکل با این کار حل شد می‌توانید مطمئن باشید که ایراد با یکی از افزونه است. برای اینکه متوجه شوید کدام افزونه مشکل ایجاد می‌کند، باید آنها را یکی یکی فعال کنید و بعد از هر کدام یک بار صفحه را لود کنید تا ببینید آیا خطا می‌دهد یا خیر. هر وقت که خطا ۵۰۴ Gateway Timeout ظاهر شد، مشخص می‌شود که خطا از آخرین افزونه است که فعال کرده‌اید. بعد از آن می‌توانید با توسعه دهنده آن افزونه مشورت کنید یا مشکل را با وردپرس مطرح کنید.

همچنین می توانید نام پوشه افزونه را به چیزی مانند plugins_old تغییر دهید. یک بار دیگر سایت را لود کنید. اگر این بار به مشکلی برخورد نکردید باز هم می‌توان گفت که ایراد از افزونه هاست. حال باید تک تک افزونه را امتحان کنید تا ببینید ایراد از کدام است. برای این منظور دوباره نام پوشه اول را plugins بگذارید. سپس پوشه‌های داخل آن را یکی یکی تغییر نام داده و سایت را لود کنید.

رفع خطا 504 Gateway Timeout + انجین اکس

همیشه افزونه ها، تم‌ها و وردپرس را آپدیت کنید. همچنین مطمئن شوید که نسخه PHP شما در سیستم پشتیبانی می‌شود. همواره می‌توانید از هاست خود کمک بگیرید.

  1. قسمت ثبت رخداد را نگاه کنید

قسمت ثبت خطاها ( دایرکت ادمین >> آمارها و لاگ ها) می‌تواند به شما در رفع اشکالات کمک کند.  این کار به شما کمک می‌کند تا خیلی سریع خطاها را بر طرف کنید. مخصوصا زمانی که خطا از جانب یکی از افزونه ها شما باشد، این روش بسیار کارآمد است.

اگر هاست شما ابزاری برای ثبت و نمایش خطاها ندارد، کد زیر را در فایل wp-config.php اضافه کنید تا عملیات ثبت خطا فعال شود.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

رفع خطا 504 Gateway Timeout + انجین اکس

همچنین می‌توانید فایل‌های log را درApache  و NGINX که در مسیرهای زیر قرار دارند مشاهده کنید:

  • Apache: /var/log/apache2/error.log
  • NGINX: /var/log/nginx/error.log
  1. تنظیمات Nginx

اگر سایت و سرور خود را بر روی Nginx + FastCGI (php-fpm) یا پروکسی Nginx مدیریت می‌کنید، گاها لازم است یک سری تنظیمات اضافی را انجام دهید تا از خطا ۵۰۴ Gateway Timeoutجلوگیری شود.

خطای ۵۰۴ در Nginx + FastCGI (php-fpm)

لازم است فایل  user.ini. را تغییر دهید. این فایل را در شاخه public_html ایجاد کنید و سپس کد زیر را در آن اضافه کنید.

max_execution_time = 300

خلاصه

همانطور که مشاهده کردید چند روش برای بر طرف کردن خطای ۵۰۴ Gateway Timeout وجود دارد. معمولا این مشکل از جانب هاست شماست و می‌توانید با مشورت با آنها این خطا را رفع کنید. همچنین ممکن است مشکل از طرف افزونه های شرکت‌های ثالث یا افزایش حجم کاری پروسه های PHP شما باشد.

اگر می‌خواهید تعداد پروسه های PHP را افزایش دهید، توصیه می‌کنیم که از پشتیبانی ما در نت افراز یا یک توسعه دهنده وارد در وردپرس استفاده کنید. اگر مطمئن هستید که مشکلی از طرف شما یا افزونه و تم‌ها وجود ندارد، در این صورت بهتر است یا طرح هاست خود را تغییر دهید یا تعداد پروسه های PHP را بالا ببرید.

اگر از این مقاله خوشتان آمده است، در این صورت از خرید هاست از نت افراز هم راضی خواهید بود. ما با پشتیبانی ۲۴ ساعته در ۷ روز هفته در خدمت مشتریان خود هستیم. در نت افراز به کیفیت و امنیت توجه ویژه‌ای می‌شود. به وبسایت ما سر بزنید و تفاوت‌ها را احساس کنید.

شاد باشید !

https://www.netafraz.com/blog/fix-the-504-gateway-timeout-error/

در این نوشته میخوانید ...

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *