هیچ چیز بدتر و نا امیدکنندهتر از این نیست که در وبسایت خود به یک صفحه خالی با یک خطا برخورد کنید. از جمله این خطاها میتوان به 502 bad gateway، white screen of death و error establishing a database connection اشاره کرد. در تجارت الکترونیک این خطاها باعث کاهش درآمد میشود. مثلا مشتریها نمیتوانند فرآیند خرید آنلاین را تکمیل کنند. در این مقاله میخواهیم در مورد خطا 504 Gateway Timeout و راههای حل آن بحث کنیم. با ما همراه باشید تا ببینید چه چیزی باعث ایجاد این خطا میشود و چه کارهایی میتوان برای جلوگیری از آن انجام داد.
خطا 504 Gateway Timeout چیست؟
در ابتدا لازم است توضیح دهیم که چطور این خطاها ایجاد میشوند. زمانی که میخواهید از یک سایت بازدید کنید، مرورگر شما درخواستی به آن سایت ارسال میکند. سرور سایت درخواست شما را دریافت و بعد از پردازش آن، ریسورسها همراه با سرانداز HTTP (HTTP header) و کد وضعیت HTTP (HTTP status code) را برای شما ارسال میکند. این کد وضعیت به شما میگوید که آیا فرآیند درست پیش میرود یا خیر. و همیشه هم این کدها حاوی خبرهای بد نیستند. مثلا کد 200 میگوید که همه چیز خوب پیش رفته است.
خطاهای وضعیت از نوع 500 شامل خطاهای 501، 502، 503، 504 و غیره هستند که معنای آنها اندکی با هم فرق دارد. این خطاها میگویند که سرور درخواست شما را دریافت کرده ولی فرآیند ذکر شده در بالا را به طور کامل انجام نداده است. خطای 504 Gateway Timeout به طور خاص به این معنی است که «سروری که نقش گذرگاه را بازی میکند، منتظر سرور دیگری بوده ولی جوابی از آن سرور دریافت نکرده است.» این حالت زمانی پیش میآید که دو سرور درگیر انجام یک عملیات باشند.
گونههای مختلف خطا 504 Gateway Timeout
به خاطر تفاوتهایی که در مرورگرها، سرورها و سیستمهای عامل وجود دارد، خطا 504 Gateway Timeout به صورتهای مختلفی نمایش پیدا میکند ولی معنی همه آنها یکیست. در زیر نمونههای مختلفی از این خطا آورده شده است.
- “504 Gateway Timeout”
- “504 Gateway Timeout NGINX”
- “NGINX 504 Gateway Timeout”
- “Gateway Timeout Error”
- “Error 504”
- “HTTP Error 504”
- “HTTP Error 504 – Gateway Timeout”
- “HTTP 504”
- “504 Error”
- “Gateway Timeout (504)
- “504 Gateway Time-out – The server didn’t respond in time”
- یا یک صفحه خالی
بعضی از کمپانیها هم یک شکل مخصوص برای این نمایش این خطا تهیه کردهاند.
نقش خطا 504 در سئو
بر خلاف خطاهای 503 که به گوگل میگوید که در زمان دیگری به سایت سر بزند، خطا 504 Gateway Timeout، اگر سریع بر طرف نشود، بر سئو تاثیر منفی میگذارد. اگر سایت شما برای 10 دقیقه از کار افتاده باشد ولی برای مدتی نسبتا طولانی به شکل مناسبی عمل کرده باشد سایت میتواند از کش دلیور شود. اصلا ممکن است گوگل تا قبل از بکآپ به سراغ فراخوانی مجدد سایت شما نرود. ولی اگر سایت شما برای مدتی بیشتر از 6 ساعت خراب باشد، ممکن است گوگل تشخیص دهد که خطا 504 اتفاق افتاده است. و این بر رنکینگ سایت شما تاثیر خواهد گذاشت. اگر نگران تکرار خطا 504 Gateway Timeout هستید، باید ببینید که اصولا این نوع خطاها به چه علتی اتفاق میافتند. در ادامه به بررسی این موضوع میپردازیم و بعضی از راه حلها را معرفی خواهیم کرد.
چگونه خطا 504 Gateway Timeout را بر طرف کنیم
برای رفع خطا 504 Gateway Timeout از کجا باید شروع کرد و چه چیز را اصلاح نمود؟ اگر تا به حال سابقه رفع این خطا را نداشتهاید، شروع کار ممکن است خیلی سخت باشد. خطا 504 Gateway Timeout در حالت کلی ناشی از مشکل شبکه/ سرور است. هر چند این نیز ممکن است که مشکل از طرف مشتری یا افزونه هایی باشد که از طرف شخص ثالث تهیه شده است. ما هر دو حالت را مختصرا بررسی میکنیم. خواهید دید که علتهای معمول این خطا چیست و چگونه میتوان آنها را بر طرف کرد.
-
صفحه را دوباره لود کنید
اولین و سادهترین کاری که در هنگام مواجهه با خطا 504 Gateway Timeout انجام میدهید این است که چند دقیقه صبر میکنید و سپس صفحه را ریفرش میکنید. ممکن است هاست یا سرور سنگین شده باشد و بالا آمدن سایت مورد نظر شما به زمان احتیاج داشته باشد. در زمانی که منتظر هستید، میتوانید یک مرورگر دیگر را نیز امتحان کنید. شاید مشکل از مرورگر باشد.
راه دیگر این است که آدرس سایت را در downforeveryoneorjustme.com وارد کنید تا ببینید آیا مشکل از طرف وبسایت است یا از طرف شما. این ابزار کد وضعیت ارسال شده از طرف سرور را بررسی میکند. هر چیزی غیر از کد وضعیت 200 که در بالا به آن اشاره کردیم نشان دهنده یک خطا میباشد.
-
غیر فعال کردن پروکسی
گاهی اوقات استفاده از سرویس پروکسی باعث ایجاد خطا 504 Gateway Timeout میشود. معمولا این اتفاق به ندرت پیش میآید ولی ممکن است یکی از این سرویسها بدون اطلاع شما برای شما فعال شده باشد.
-
مشکل DNS
خطا 504 Gateway Timeout ممکن است به خاطر مشکل DNS باشد. دو حالت در اینجا وجود دارد؛ در حالت اول خطا از جانب سرور است، مثلا نام دامنه به IP صحیح برگردانده نشده باشد. اگر به تازگی سایت خود را به یک هاست انتقال داده باشید، برای انتشار (propagation) کامل آن گاها لازم است تا 24 ساعت منتظر بمانید. این زمان به مقدار اختصاص داده شده به TTL بستگی دارد. برای اینکه ببینید DNS شما انتشار یافته است یا خیر میتوانید از ابزار رایگان DNSMap استفاده کنید.
در حالت دوم مشکل از طرف مشتری است. در این حالت باید کش DNS را پاک کنید. این کار مانند پاک کردن کش مرورگر است. برای انجام این کار در ویندوز، Command Prompt را باز و دستور زیر را وارد کنید:
ipconfig /flushdns
اگر کار به درستی انجام شود باید پیام “Successfully flushed the DNS resolver Cache” را مشاهده کنید.
کاربران macOS باید دستور زیر را در ترمینال وارد کنند.
dscacheutil –flushcache
البته در این مورد بعد از انجام موفقیت آمیز کار، پیامی به کاربر نمایش داده نمیشود.
نکته آخر اینکه میتوانید سرور DNS را تغییر دهید. به طور پیشفرض سرورهای DNS به وسیله ISP شما تعیین میشود. ولی شما میتوانید به طور موقت یکی از سرورهای عمومی مانند Googles را انتخاب کنید. به خاطر اعتبار Googles، بعضیها ترجیح میدهند از آن برای طولانی مدت استفاده کنند.
-
غیر فعال کردن CDN
ممکن است مشکل از طرف CDN (content delivery network) باشد. اگر CDN را شخص ثالث در اختیار شما قرار داده است، بهتر است موقتا آن را غیر فعال کنید. ما معمولا از افزونه CDN enabler استفاده میکنیم. میتوان به سادگی آن را برای مدتی غیر فعال کرد و سایت را تست کرد. اگر به داشبورد سایت خود دسترسی ندارید، از طریق SFTP وارد سایت خود شوید و نام پوشه افزونه را به cdn-enabler_old تغییر دهید. این کار به طور موقت اتصال CDN را قطع میکند. همین مسئله در مورد افزونه WP Rocket و سایر افزونه هایی که به CDN مربوط میشود نیز برقرار است.
همچنین ممکن است مشکل از طرف ارائه دهندگان سرویسهای کاملا پروکسی مانند Cloudflare یا Sucuri (به خاطر فایروالهای اضافی آنها) باشد. ما متوجه شدیم که هر از چند گاهی این مشکل در سرویس رایگان Cloudflare پیش میآید. متاسفانه از آنجایی که این سرویس کاملا پروکسی است نمیتوان به سادگی آن را غیر فعال کرد.
البته قبل از آنکه مشکل را گردن Cloudflare بیاندازید باید به این نکته توجه کنید که دو حالت مختلف از خطا 504 Gateway Timeout داریم. خطای اول که به صورت زیر نمایش داده میشود نشان میدهد که مشکل از طرف Cloudflare است و شما باید از آنها درخواست پشتیبانی کنید یا صفحه وضعیتشان را چک کنید. معمولا خودشان در جریان مشکل هستند و دارند تلاش میکنند که آن را بر طرف کنند.
حالت دوم به صورت زیر است و بدین معنیست که مشکل از طرف هاست وردپرس شماست شماست. برای رفع این مشکل به توصیه شماره 5 در پایین رجوع کنید.
آپلود در Cloudflare
یکی دیگر از علتهای خطای 504 Gateway Timeout، اندازه فایلی است که میخواهید آن را آپلود کنید. در طرح رایگان Cloudflare حجم فایلی که میخواهید آن را آپلود کنید نمیتواند بیشتر از 100 مگابایت باشد. هر چند گاها دیده میشود که فایلهایی با حجم کمتر از 100 مگابایت هم دچار مشکل میشوند. در این حالت برای اینکه ببینید مشکل از طرف هاست شمایت یا از طرف Cloudflare، با استفاده از فایل هاست DNS یک مسیر جنبی بسازید و دوباره فایل مورد نظر را آپلود کنید یا اینکه به طور موقت Cloudflare را غیر فعال کنید.
همیشه توصیه میشود که اگر از Cloudflare در وردپرس استفاده میکنید، افزونه هایی مربوط به آن را که در آدرس https://wordpress.org/plugins/cloudflare وجود دارد، نصب کنید.
-
مشکل سرور
مشکل سرور یکی از مهترین دلایل بروز خطای 504 Gateway Timeout در سایتهای وردپرسی میباشد. به طور ساده مسئله در اینجا این است که Nginx یا Apache منتظر یک پاسخ بودهاند ولی چیزی دریافت نکردند.
خطاهای 504 معمولا در سایتهای تجاری و سایتهایی با ترافیک بالا مانند WooCommerce اتفاق میافتد. چون در این سایتها ممکن است سرور متحمل اضافه بار شوند. اگر چه دیده شده که این مشکل برای سایتهایی با ترافیک پایین هم به وجود میآید. بسیاری از هاستها در واکنش به این خطا از مشتریان خود میخواهند که طرح خود را آپگریت کنند. هر چند احتمالا با انجام این کار مشکل حل میشود، ولی انجام آن برای رفع مشکل، همیشه ضروری نیست.
در Kinsta برای هر سایت از یک محفظه نرمافزاری LXC استفاده میشود. در واقع هر سایت در یک محفظه نرمافزاری منزوی قرار داده شده است که تمام ریسورسهای نرمافزارهای مورد نیاز (Linux, NGINX, PHP, MySQL) را در خود دارد. این بدین معنیست که نرمافزاری که هر سایت را اجرا میکند مخصوص همان سایت است و با سایت دیگری به اشتراک گذاشته نمیشود. این مزیت در هاستهای عمومی وردپرس کمتر دیده میشود و بنابراین افزایش ترافیک، احتمال رخ دادن خطای 504 را افزایش میدهد. حتی اگر ترافیک مربوط به سایر سایتهای هاست باشد.
علاوه بر این در نت افراز زیر ساختهایی را طراحی کردهایم که به ما توانایی مدیریت هزاران اتصال همزمان را میدهد. حتی پایگاه دادههای MySQL هم در یک هاست محلی (و نه در یک سرور خارجی) نگهداری میشود. این باعث میشود که تاخیر در ارتباط بین ماشینها وجود نداشته باشد و درخواستها با سرعت بالایی پیگیری شود. مشتریهایی که از یک هاست دیگر به نت افراز آمدهاند، این افزایش سرعت را کاملا حس کردهاند.
علاوه بر اضافه بار، مشکلات دیگری نیز در سرور وجود دارد که باعث ایجاد خطای 504 میشوند:
- کندی سرور: کاملا ممکن است که سرور سایت شما کند باشد. در این صورت شما شاهد خطای 504 خواهید بود.
- تعداد کم کارگران PHP: کارگران PHP (PHP workers) برای اجرا کردن کدها در سایتهای وردپرسی استفاده میشوند. زمانی که درخواست لود شدن سایت را میدهید، این احتمال وجود دارد که کارگران PHP مشغول کارهای دیگر باشند. در این صورت ممکن است درخواست شما نادیده گرفته شود. میتوانید از هاست خود بخواهید که تعداد کارگران PHP شما را افزایش دهد.
- مشکل فایروال: ممکن است فایروال سرور شما خطا داشته باشد. پیکربندی نامناسب یا قوانینی که جلوی اتصال صحیح را میگیرند از جمله مشکلات فایروال هستند.
- اتصال شبکه: اگر مشکلی در اتصال سرور پروکسی و سرور وب وجود داشته باشد، پاسخ به درخواست HTTP با تاخیر مواجه خواهد شد.
- ایست HTTP: زمانی پیش میآید که اتصال بین مرورگر و سرور وب برای مدتی طولانی باز مانده باشد. این مشکل مخصوصا هنگام استفاده از ورودیهای وردپرس (WordPress imports) پیش میآید . یکی از راه حلهای این مشکل استفاده از اینترنت پر سرعت است. همچنین میتوانید از افزونه ای مانند WordPress Importer که از WP-CLI پشتیبانی میکند نیز کمک بگیرید و اتصال HTTP را دور زده و ورودیها را مستقیم در سرور اجرا کنید.
اگرچه خطای 504 خیلی شبیه به خطای 503 یا 502 است، ولی در اصل این خطاها با هم متفاوتند.
اگر نگران این هستید که این خطاها در آینده برای شما اتفاق بیافتد، پیشنهاد میکنیم که updown.io را نصب کنید. این ابزار به محض رخ دادن خطا شما را در جریان قرار میدهد. میتوانید این ابزار را طوری تنظیم کنید تا در بازههای زمانی زیر وبسایت شما را چک کند.
- 15 ثانیه
- 30 ثانیه
- 1 دقیقه
- 2 دقیقه
- 5 دقیقه
- 10 دقیقه
اگر سایت مشکلی داشته باشد، ایمیلی به شکل زیر برای شما ارسال میشود.
اگر از هاستهای عمومی با سرورهای شلوغ استفاده میکنید، این ابزار بسیار برای شما مفید خواهد بود. از این طریق خواهید دانست که سایت شما چند وقت به چند وقت به مشکل برخورد میکند. و بنابراین به اهمیت استفاده از یک هاست خوب پی میبرید.
-
اسپم، بات و حمله DDoS
کاملا ممکن است که سایت شما دچار اسپم، بات و یا حمله DDoS شده باشد. این مشکلات گاها منجر به اختلال در کار سرور و در نتیجه بروز خطای 504 Gateway Timeout میشوند. میتوانید به تحلیلگر سرور خود نگاه کنید و ببینید آیا واقعا مشکلی در آنجا رخ داده است یا خیر.
-
افزونه ها و تمهای خود را بررسی کنید
خیلیها میگویند که افزونه ها و تمهای تهیه شده از طرف شرکتهای ثالث باعث ایجاد خطا 504 Gateway Timeout نمیشوند. در واقع در اکثر مواقع هم همینطور است. ولی ما به تجربه دیدهایم که وقتی درخواست یک افزونه با سرعت پایینی انجام شود تعداد پروسه های PHP بیشتری را درگیر خود کرده و باعث ایجاد وقفه میشود. زمانی که همه پروسه ها PHP مشغول باشند، درخواستهای قدیمیتر رد میشود و خطای 504 ایجاد خواهد شد. در اینجا تفاوت خطا 504 Gateway Timeout و 502 این است که در خطای 502 درخواست بعد از یک وقفه 60 ثانیهای رد میشود.
غیر فعال کردن افزونه در این حالت میتواند به رفع خطا 504 Gateway Timeout کمک کند. به یاد داشته باشید که این کار باعث از بین رفتن دادههای شما نمیشود. اگر به ادمین دسترسی داشته باشید، میتوانید به سادگی عبارت “Plugins” را جستجو کرده و آن را از طریق منوی Bulk Actions غیر فعال کنید. در این صورت تمام افزونه غیر فعال خواهند شد.
اگر مشکل با این کار حل شد میتوانید مطمئن باشید که ایراد با یکی از افزونه است. برای اینکه متوجه شوید کدام افزونه مشکل ایجاد میکند، باید آنها را یکی یکی فعال کنید و بعد از هر کدام یک بار صفحه را لود کنید تا ببینید آیا خطا میدهد یا خیر. هر وقت که خطا 504 Gateway Timeout ظاهر شد، مشخص میشود که خطا از آخرین افزونه است که فعال کردهاید. بعد از آن میتوانید با توسعه دهنده آن افزونه مشورت کنید یا مشکل را با وردپرس مطرح کنید.
همچنین می توانید نام پوشه افزونه را به چیزی مانند plugins_old تغییر دهید. یک بار دیگر سایت را لود کنید. اگر این بار به مشکلی برخورد نکردید باز هم میتوان گفت که ایراد از افزونه هاست. حال باید تک تک افزونه را امتحان کنید تا ببینید ایراد از کدام است. برای این منظور دوباره نام پوشه اول را plugins بگذارید. سپس پوشههای داخل آن را یکی یکی تغییر نام داده و سایت را لود کنید.
همیشه افزونه ها، تمها و وردپرس را آپدیت کنید. همچنین مطمئن شوید که نسخه PHP شما در سیستم پشتیبانی میشود. همواره میتوانید از هاست خود کمک بگیرید.
- قسمت ثبت رخداد را نگاه کنید
قسمت ثبت خطاها ( دایرکت ادمین >> آمارها و لاگ ها) میتواند به شما در رفع اشکالات کمک کند. این کار به شما کمک میکند تا خیلی سریع خطاها را بر طرف کنید. مخصوصا زمانی که خطا از جانب یکی از افزونه ها شما باشد، این روش بسیار کارآمد است.
اگر هاست شما ابزاری برای ثبت و نمایش خطاها ندارد، کد زیر را در فایل wp-config.php اضافه کنید تا عملیات ثبت خطا فعال شود.
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
همچنین میتوانید فایلهای log را درApache و NGINX که در مسیرهای زیر قرار دارند مشاهده کنید:
- Apache: /var/log/apache2/error.log
- NGINX: /var/log/nginx/error.log
-
تنظیمات Nginx
اگر سایت و سرور خود را بر روی Nginx + FastCGI (php-fpm) یا پروکسی Nginx مدیریت میکنید، گاها لازم است یک سری تنظیمات اضافی را انجام دهید تا از خطا 504 Gateway Timeoutجلوگیری شود.
خطای 504 در Nginx + FastCGI (php-fpm)
لازم است فایل user.ini. را تغییر دهید. این فایل را در شاخه public_html ایجاد کنید و سپس کد زیر را در آن اضافه کنید.
max_execution_time = 300
خلاصه
همانطور که مشاهده کردید چند روش برای بر طرف کردن خطای 504 Gateway Timeout وجود دارد. معمولا این مشکل از جانب هاست شماست و میتوانید با مشورت با آنها این خطا را رفع کنید. همچنین ممکن است مشکل از طرف افزونه های شرکتهای ثالث یا افزایش حجم کاری پروسه های PHP شما باشد.
اگر میخواهید تعداد پروسه های PHP را افزایش دهید، توصیه میکنیم که از پشتیبانی ما در نت افراز یا یک توسعه دهنده وارد در وردپرس استفاده کنید. اگر مطمئن هستید که مشکلی از طرف شما یا افزونه و تمها وجود ندارد، در این صورت بهتر است یا طرح هاست خود را تغییر دهید یا تعداد پروسه های PHP را بالا ببرید.
اگر از این مقاله خوشتان آمده است، در این صورت از خرید هاست از نت افراز هم راضی خواهید بود. ما با پشتیبانی 24 ساعته در 7 روز هفته در خدمت مشتریان خود هستیم. در نت افراز به کیفیت و امنیت توجه ویژهای میشود. به وبسایت ما سر بزنید و تفاوتها را احساس کنید.
شاد باشید !