آموزش عیب یابی و رفع خطای 504 Gateway Timeout در وردپرس

0

آموزش عیب یابی و رفع خطای 504 در وردپرس

در مقالات قبلی با شما در رابطه با عیب یابی و رفع خطای 503 صحبت کرده بودیم. امروز فرصت مناسبی است که با هم در رابطه با عیب یابی و رفع خطای 504 صحبت کنیم. البته هردوی این خطا ها (و به طور کلی خطاهای خانواده 5xx) به نحوی شباهت هایی به هم دارند و به همین دلیل راه حل های عیب یابی و رفع آنها نیز تا حدی مشترک بوده و به یکدیگر شبیه خواهد بود. اما از آنجایی که خطای 504 نیز در دسته ی خطاهای مرسومی که بسیاری از کاربران با آن مواجه میشوند، قرار میگیرد، به نظر میرسد که اختصاص دادن یک مقاله ی جداگانه به این خطا، تصمیم مناسبی باشد.

اگر در مقاله ی امروز با مسترکد همراه باشید، سعی میکنیم با هم اَشکال مختلف اتفاق افتادن خطای 504 را بررسی کرده و سپس به بررسی دلایل وقوع این خطا و بیان کردن راه حل های برطرف سازی آن بپردازیم. از شما دعوت میکنیم که ادامه ی این مقاله را به همراه ما دنبال کنید.

شکل های مختلف خطای 504 Gateway Timeout

بسته به اینکه خطای 504 gateway time-out از چه محلی به شما بازگردانده میشود، شکل اتفاق افتادن آن نیز ممکن است متفاوت باشد. البته پیام کلی این است که سروری که به عنوان gateway عمل میکند نتوانسته در زمان مقرر شده، پاسخ مناسبی را دریافت کند و به همین جهت امکان پاسخدهی به درخواست شما و نمایش صفحه ی مورد نظر میسر نشده است. در اینجا باید به این نکته توجه داشت که هرچند طبق این توضیح، خطای 504 یک خطای سمت سرور است ولی این مسئله به این مفهوم نیست که اگر به این خطا برخورد کنید، سرور میزبانی شما مشکلی دارد. بنابراین در نظر داشته باشید که حتی در این حالت هم ممکن است مشکل از خود سایت شما سرچشمه بگیرد. بنابراین در عیب یابی این خطا صبور باشید تا به بهترین نتیجه دست پیدا کنید.

همانطور که در ابتدا هم اشاره کردیم، خطای 504 ممکن است به شکل های مختلفی اتفاق بیافتد. در زیر سه نمونه از وقوع این خطا را مشاهده میکنید. تصویر اول وقوع خطای 504 را در سایتی با وب سرور nginx نشان میدهد:

خطای 504 gateway timeout در وب سرور nginx

تصویر دوم وقوع خطای 504 را در CloudFlare به نمایش میگذارد :

وقوع خطای 504 gateway time-out در سی دی ان کلادفلر

و تصویر دیگری که در زیر آمده، نمایش خطای 504 توسط مرورگر را نشان میدهد :

نمایش خطای 504 توسط مرورگر

همانطور که مشاهده میکنید در تصویر بالا، مرورگر ذکر کرده domain.com took too long to respond و سپس در بخش خطا HTTP Error 504 را لیست کرده است. این مسئله دقیقا به شرح این خطا که در ابتدا در رابطه با آن توضیح دادیم اشاره میکند و میگوید که پاسخدهی سایت مورد نظر، بیش از اندازه به طول انجامیده است.

پیدا کردن دلیل و رفع خطای 504

در هنگام بروز خطای 504 موارد مختلفی برای بررسی وجود خواهد داشت که در ادامه به طور مختصر به شرح آنها خواهیم پرداخت. پیش از بررسی دلایل این خطا، بهتر است به این نکته هم اشاره کنیم که اگر این امکان برای شما میسر باشد که پیش از هر کاری به بررسی log های سایتتان بپردازید، شاید بتوانید خیلی سریع تر منشا خطا را پیدا کرده و تا حدی از حدس زدن و تست کردن راه حل های مختلف بی نیاز شوید. توصیه میکنیم که حتما پیش از شروع به مطالعه و دنبال کردن این راهنما، یک بکاپ کامل از سایت خود تهیه کنید.

1- شاید خطا موقتی باشد : شاید درست نباشد که این مورد را در بخش دلایل خطای 504 ذکر کنیم. اما پیش از اینکه به دنبال یک تعقیب و گریز طولانی بروید، در نظر بگیرید که این خطا ممکن است کاملا موقتی باشد. بنابراین یکی دو دقیقه صبر کنید و مجددا سایت را بارگذاری کنید. در این حالت اگر مشکل سایتتان برطرف شده باشد، این مسئله یک مشکل موقتی کوچک بوده که برطرف شده و جای نگرانی خاصی نیست. در این حالت توصیه میکنیم پس از برطرف شدن مشکل، سایتتان را به خوبی زیر نظر داشته باشید. در صورت تکرار خطا نیاز به بررسی های بیشتری خواهید داشت.

2- ممکن است سایت شما به منابع بیشتری احتیاج داشته باشد : در حال حاضر جهت رعایت حقوق کلیه ی مصرف کنندگان و اشتراک عادلانه ی منابع بین کاربران عموم هاست های اشتراکی به نحوی تنظیم میشوند که از استفاده ی بیش از اندازه ی منابع توسط یک سایت جلوگیری به عمل آید. چرا که اگر قرار باشد وبسایتی بیش از حدود مجاز تعیین شده در این نوع پلن های میزبانی، از منابع یک سرور استفاده کند، این امر میتواند به بروز مشکل برای سایر سایت های میزبانی شده بر روی آن سرور منجر شود. بنابراین یکی از دلایلی که ممکن است منجر به بروز خطای 504 در سایت شما شود، همین کمبود منابع و یا گاهی کمبود worker های PHP اختصاص داده شده به سایت شماست.

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

3- نگران نشوید اما احتمال حمله ی DDOS را هم در نظر داشته باشید : اولا، افزایش ناگهانی بازدیدکنندگان یک سایت الزاما به مفهوم حمله دیداس نیست. بررسی این مسئله هم با چک کردن نوع درخواست ها، آی پی کاربران، آدرس ارجاع دهنده، اطلاعات مرورگر و موارد از این دست، میسر بوده و کار بسیار آسانی است. پس به این دلیل به DDOS اشاره نکرده ایم که شما را بترسانیم. این دلیل را در اینجا گنجانده ایم که در صورت لزوم، آن را هم در نظر داشته باشید.

اگر فرضا یکی از افزونه های امنیتی شما نکته ی نگران کننده ای در سایت پیدا کرده، یا در این زمینه تهدیدی داشته اید، باید احتمال این نوع حمله را نیز در نظر بگیرید. در چنین حالتی پس از حصول اطمینان از وجود حمله، میتوانید از سرویس هایی مانند Cloudflare (و البته بسیاری سرویس های مشابه) بهره بگیرید و یا اگر برای انجام این کار کمی دیر شده، شاید میزبان شما بتواند با خارج کردن سایت از دسترس برای مدت زمانی مشخص، مشکل را موقتا برطرف کند و فرصت مناسب را برای شما جهت اندیشیدن تمهیدات امنیتی در دفعات بعد، فراهم نماید.

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

4- اگر اخیرا سایتتان را منتقل کرده اید : نه نگران نشوید! مشکل از خود انتقال نیست. بلکه ممکن است خطای 504 به علت ست نشدن کامل DNS ها برای شما پیش آمده باشد. بنابراین اگر سایتتان را جدیدا به هاست دیگری منتقل کرده اید و همه چیز هم به درستی انجام شده، حتما بررسی کنید که دی ان اس های صحیح را روی دامنه ی خود تنظیم کرده باشید و بعد هم در نظر داشته باشید که ست شدن کامل دی ان اس ها روی دامنه، ممکن است تا 24 ساعت نیز به طول بیانجامد. (برای دامنه های ir که خدا به خیر بگذرونه!)

ست شدن کامل دی ان اس روی دامنه ی تان را میتوانید در سایتی مانند intodns.com بررسی کنید. اگر پس از بررسی دامنه در این سایت، اوضاع DNS ها مرتب بود و همه چیز آنطور که باید به نظر میرسید اما هنوز قادر به مشاهده سایت نبودید، ابتدا از سایت خود ping بگیرید که مشخص شود کامپیوتر شما درخواست را به کدام سرور میفرستد. (سرور قدیمی یا سرور جدید) اگر درخواست هنوز به سرور قدیمی فرستاده میشد، با وارد کردن دستور زیر در cmd ویندوز، میتوانید کش DNS خود را خالی کنید :

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

5- شاید دیتابیس شما احتیاج به تعمیر دارد : هرچند این مسئله تقریبا خیلی کم پیش می آید اما گاهی ممکن است بروز خطا به علت نیاز دیتابیس شما به تعمیر یا repair باشد. تعمیر دیتابیس های کوچک را میتوانید به سادگی از طریق phpmyadmin و یا افزونه ای مانند WP-DBManager انجام دهید. برای دیتابیس های بزرگتر ممکن است لازم باشد که از دستور استفاده کنید.

توجه : پیش از اعمال هر نوع تغییر روی دیتابیس، حتما از سایت خود بکاپ کامل تهیه کنید.

5- اگر تغییری در فایل htaccess ایجاد کرده اید : تغییرات ایجاد شده در فایل htaccess نیز میتواند از دلایل بروز خطای 504 باشد. البته در نظر داشته باشید که ممکن است خود شما مستقیما تغییری در این فایل ایجاد نکرده باشید و این تغییر از طریق یک افزونه ی جانبی روی این فایل اعمال شده باشد. به هر حال در این شرایط شما باید این فایل را به حالت قبل یا به یکی از بکاپ هایی که در اختیار دارید بازگردانید و نتیجه را بررسی کنید.

اگر شک دارید که واقعا مشکل از htaccess باشد، میتوانید پس از ایجاد بکاپ از این فایل، آن را به صورت موقت از کدهای اضافی خالی کرده و نتیجه را بررسی کنید. در صورتی که مشکل سایت با این کار برطرف شد و مجددا در دسترس قرار گرفت، حتی اگر از نسخه ی قدیمی فایل htaccess که بدون مشکل در سایتتان کار میکرده، نسخه ی پشتیبانی نداشته باشید، باز هم با صرف کمی وقت و انجام آزمون و خطا میتوانید کدی که منجر به بروز خطا میشود را یافته و آن را از فایل حذف کنید.

6- افزونه یا قالب جدیدی نصب کرده اید : در بسیاری از مواقع (خیلی بیشتر از آنچه فکرش را بکنید) مشکل از افزونه یا قالب جدیدی سرچشمه میگیرد که به تازگی در سایتتان نصب و فعال کرده اید. گاهی این مسئله ممکن است از به روز رسانی هایی که اخیرا روی سایتتان اعمال کرده اید نیز سرچشمه بگیرد. بنابراین اگر تغییری در این زمینه در سایت اعمال کرده اید، بهترین کار این است که حالا، آن را به حالت قبل بازگردانید. مثلا افزونه ی جدیدی که نصب کرده اید را غیر فعال کنید. یا اگر نمیدانید که مشکل دقیقا ممکن است از کدام افزونه باشد، میتوانید کلیه ی افزونه ی های سایت را غیر فعال کرده و دسترسی به سایت را مجددا بررسی کنید. در مورد قالب ها نیز مشابه همین مسئله صادق خواهد بود. (آموزش غیر فعال کردن افزونه های وردپرس بدون دسترسی به ناحیه مدیریت)

افزونه یا قالبی که به درستی کار نکند میتواند منجر به بروز کندی در پاسخدهی سایت شده و در نهایت خطای 504 را ایجاد کند.

7- اگر از فایروال استفاده میکنید : فایروال لایه ای امنیتی است که بین مرورگر بازدیدکننده و سرور قرار میگیرد. اگر در سایت خود فایروال فعال کرده باشید، وجود هر نوع مشکل در تنظیمات فایروال ممکن است از دسترسی کاربران به سایت جلوگیری کرده و منجر به بروز خطا شود. برای بررسی این مسئله میتوانید فایروال را موقتا غیر فعال کرده و سپس دسترسی به سایت را مجددا بررسی کنید.

8- شاید مشکل از CDN باشد : مشابه مبحث مطرح شده برای فایروال، همین حالت در صورت استفاده از CDN نیز ممکن است برای شما پیش بیاید. بنابراین اگر از CDN استفاده میکنید، بهتر است که تنظیمات آن را بررسی کرده و یا در صورت نیاز با پشتیبان CDN خود در این رابطه مشورت کنید.

9- کمبود timeout در nginx و عدم هماهنگی با مقدار timeout در PHP : این مورد را برای مدیران سرور ها در اینجا درج کرده ایم. بنابراین به عنوان یک کاربر عادی اگر مدیریت سرور در دست شما نیست، از این مورد عبور کنید. البته لازم به ذکر است که بروز این حالت در وردپرس اصلا مرسوم هم نیست اما احتمالی است که بد نیست در نظر گرفته شود. گاهی پیش می آید که مقدار زمان timeout تنظیم شده برای nginx از حداکثر زمان مجاز اجرای اسکریپت در php کمتر است. در این حالت اگر عملیاتی که شما از طریق php انجام میدهید به طول بیانجامد، شما به timeout وب سرور انجینکس برخورد میکنید در حالی که اسکریپت php هنوز در پس زمینه در حال اجراست! در اینجا باید به این نکته توجه داشت که اگر مشکل شما از این مورد باشد، وبسایت شما عموما بدون مشکل در دسترس خواهد بود و تنها در مواردی که عملیات خاصی را انجام میدهید با این مشکل برخورد خواهید کرد. راه حل این مشکل این است که تایم آوت انجینکس را با تایم آوت php هماهنگ کرده و مقداری را برای هر دو برگزینید که با نیازهای سایت شما مطابقت داشته باشد.

10- و در نهایت ممکن است که : اگر هیچ یک از موارد بالا، مشکل شما را برطرف نمیکند، خوب، این احتمال وجود دارد که مشکلی در سرور میزبانی شما بوجود آمده باشد. توجه داشته باشید که ما از کلمه ی “احتمال” صحبت کرده ایم. چرا که پیچیدن یک نسخه ی ثابت برای همه ی مشکلات و همه ی کاربران، نه صحیح است و نه مناسب. به هر حال اگر کلیه ی موارد فوق، مشکل شما را برطرف نکرده است، میتوانید به سراغ پشتیبانی هاستینگ خود رفته و از آنها درخواست راهنمایی کنید. حتی در این شرایط هم در نظر بگیرید که ممکن است هنوز موردی را از قلم انداخته باشید. بنابراین با نیت دریافت کمک به سراغ پشتیبانی بروید و نه با حالتی طلبکارانه. (آرامش، اخلاق خوب و مقصر قلمداد نکردن دیگران کلید حل مشکلات شماست)

و اما اگر خودتان مدیر سرور خود هستید (مثلا از سرور مجازی یا اختصاصی برای میزبانی سایت خود استفاده میکنید) وضعیت وب سرور خود را بررسی کنید. این مسئله خصوصا در مورد وب سرور Nginx خیلی مرسوم است و گاهی ممکن است چاره ی آن یک ریستارت ساده ی سرویس انجینکس باشد! اگر هم از ترکیب وب سرورهای nginx و آپاچی در ترکیب با FPM استفاده میکنید، گاهی یک ریستارت ساده ی سرویس fpm، سریع ترین راه حل این مشکل خواهد بود. (همه ی اینها به شرطی است که مشکل از خود سایت شما نباشد و واقعا از طرف سرور اتفاق افتاده باشد و البته سرور هم دچار مشکل یا نقص در تنظیمات نرم افزاری نباشد)

سخن پایانی

در بالا موارد مختلفی که میتواند منجر به بروز خطای 504 شود را برای شما برشمردیم و راه حل هایی را برای برطرف کردن این خطا در هر حالت برای شما ذکر کردیم. در انتها مجددا روی اهمیت ایجاد بکاپ از سایتتان، پیش از انجام هر نوع تغییر جهت رفع خطا، تاکید میکنیم. بنابراین این مورد را از قلم نیاندازید.

در پایان امیدواریم که این راهنما در برطرف کردن خطای سایتتان به شما کمک کرده باشد. از شما دعوت میکنیم که اگر موردی را از قلم انداخته ایم، حتما آن را در بخش دیدگاه ها به ما یادآوری کنید و اگر در زمینه ی رفع این خطا، تجربه ای دارید، آن را با دیگر کاربران نیز به اشتراک بگذارید.

دسترسی آسان به این مطلب لینک کوتاه :
شاید از اینها هم خوشتان بیاید!
ارسال پاسخ

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