آموزش های وردپرس

آموزش رفع مشکل مصرف بالای CPU هاست در وردپرس

یکی از مشکلاتی که بیشتر در سایت‌های وردپرسی به وجود میاد و باعث بالا رفتن مصرف بیش از حد CPU هاست در وردپرس میشه توسط فایل admin-ajax.php وردپرس هست. در صورتی که مدت زیادی هست از وردپرس استفاده می‌کنید و احتمالا هم از ابزار تست سرعت در وردپرس استفاده کردید حتما با این خطا مواجه شدید. یا حتی ممکنه از طرف شرکت میزبانی وب که ازش هاست خریداری کردین، اخطاری مبنی بر مصرف بالای CPU در وردپرس دریافت کرده باشید. دلیل به وجود اومدن خطای مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php بیشتر از سمت افزونه‌های شخص ثالث یا درخواست‌هایی مثل ذخیره خودکار پیش نویس در وردپرس که به صورت مرتب در پیشخوان وردپرس انجام میگیره به وجود میاد. پس مهمه که به این خطاها توجه کنید و هر زمان که با خطای مصرف بالای منابع CPU در هاست توسط وردپرس مواجه شدید و دیدید که این خطا از سمت فایل admin-ajax هست اونو برطرف کنید.

در این آموزش از پایگاه دانش میزبان‌فا قصد دارم به معرفی راهکارهای مختلفی که برای حل مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php قرار داره بپردازم که با استفاده از این راهکارها میتونید به راحتی مشکل مصرف بالای cpu را در وردپرس برطرف کنید. پیش از این هم در مقاله دیگه‌ای تحت عنوان آموزش رفع مشکل استفاده زیاد از منابع CPU در وردپرس به راه‌های مختلفی برای رفع مشکل مصرف بالای منابع در هاست پرداختم.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax

حالا ممکنه این سوال براتون پیش بیاد که اصلا فایل admin-ajax.php چیست؟ فایل admin-ajax.php وردپرس یکی از فایل‌های هسته وردپرس هست که از نسخه 3.6 وردپرس به اون اضافه شده. هدف این فایل ایجاد ارتباط بین مرورگر و سرور هست که با استفاده از ajax این ارتباط برقرار می‌شود. این ارتباط کاری که انجام میده اینه که قابلیت‌های پیشرفته مثل بهبود ذخیره سازی خودکار کارها در وردپرس، ردیابی رونوشت‌ها، زمان تایم اوت ورود به وردپرس، مدیریت نشست‌ها در وردپرس و اطلاعیه‌های یک نوشته مثل زمانی که نوشته قفل شده و توسط فرد دیگر در حال ویرایش هست را به شما خواهد داد. هر کدوم از این ویژگی های ذکر شده برای سایت‌هایی که چندین کاربر در اون فعالیت دارند به امری ضروری تبدیل شده است. به عنوان نمونه اگر همین حالت نمایش کاربران هنگام ویرایش یک نوشته نباشه ممکنه همزمان دو مدیر در حال ویرایش و تغییر روی یک نوشته باشند که باعث ایجاد مشکل در محتوای سایت و محصولات در وردپرس بشه.

ایده انجام این کار به این شکل هست که از هر 15 ثانیه درخواست‌های XHR به سرور ارسال میشن و در نهایت با فرستان پاسخ‌ها به صورت callbacks نتیجه نمایش داده میشه. سپس سایر اجرا با هماهنگ سازی که بینشون ایجاد میشه در مورد فعالیت‌های دیگر کاربران از این طریق اطلاع داده میشه. در نهایت همونطور که در بالا هم اشاره شد این کار باعث میشه تا ضمن اطلاع از اینکه یک کاربر در حال تغییر دادن یک نوشته، ابزارک و… هست قفل گذاری روی اون انجام بگیره و باعث نشه همزمان دو کاربر در حال ایجاد تغییرات باشند.

با این اوصاف حتما فکر می‌کنید که این یک کار ساده است، اما چرا در ابزارهای تست سرعت در وردپرس که انجام میدین با خطاهایی مواجه میشید؟

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

همونطور که در تصویر بالا می‌بینید در ابزار تست سرعت سایت مثل pingdom معمولا دو نتیجه از این سناریو دریافت خواهیم کرد. یکی در بخش جلویی و دیگری در front-end و دیگری در back-end که مربوط به بخش مدیریت و کاربری سایت هستند.


1. مصرف بالای CPU توسط admin-ajax بخاطر افزونه‌ها

اولین و رایج ترین خطا که باعث به وجود اومدن خطای مصرف بالای CPU در وردپرس بخاطر فایل admin-ajax میشه از سمت افزونه‌های شخص ثالث نشات میگیره. این موضوع بیشتر در front-end وردپرس رخ میده که مربوط به همون بخش کاربری سایت هست و در تست سرعت سایت هم میبینیمش. دلیل به وجود اومدن خطا از سمت افزونه‌ها هم بیشتر به این خاطر هست که توسعه دهنده‌های وردپرس از قابلیت ajax یا توسط همین فایل برای افزونه‌های خودشون استفاده می‌کنند تا قابلیت‌هایی رو به کاربران ارائه کنند. اما فقط به این دلیل که شما یک درخواست رو برای admin-ajax.php می‌بینید لزوما به این معنی نیست که سایت شما بخاطر این موضوع کند شده است. بعد از اینکه صفحات لود شدند قابلیت Ajax وردپرس شروع به کار میکنه و درخواست های خاصی رو به صورت ناهماهنگ اجرا و دریافت میکنه. پس اگر به درستی از این قابلیت توسط توسعه دهنده‌های وردپرس استفاده نشه باعث به وجود اومدن کندی در وردپرس میشه که نتیجه اون بالا رفتن مصرف منابع CPU خواهد بود.

در تصویر زیر نمونه‌ای از تشخیص مشکل admin-ajax رو مشاهده می‌کنید که توسط سایت Gtmetrix بررسی شده، بخاطر اینکه بررسی با این سایت اجازه میده که داده‌های حقیقی و واقعی رو به صورت واکنشگرا به دست بیاریم. در صورتی که استفاده از pingdom این قابلیت رو به ما نخواهد داد. پس اگر شما هم قصد تست و بررسی مشکل admin-ajax.php در وردپرس رو دارید بهتره از سایت gtmetrix برای این کار استفاده کنید. البته محدود به این دو سایت هم نیستید و میتونید از Google Chrome Devtools یا WebPageTest هم استفاده کنید.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

در اینجا نمونه تستی انجام گرفته که دلیل اون بخاطر استفاده از افزونه ویژوال کامپوزر هست و باعث به وجود اومدن خطای admin-ajax.php در وردپرس شده و همونطور که میبینید بر اساس گزارش Gtmetrix بیشتر از 8 ثانیه در لود این فایل طول میکشه که این زمان برای لود خیلی زیاد هست و باعث کند شدن سایت خواهد شد.

در اینجا اگر شما روی درخواست POST admin-ajax.php کلیک کنید، میتونید سه زبانه مختلف را مشاهده کنید که شامل Headers، Post، و Response هستند. برای این سایت، ما میتونیم سرنخ مشکل را در برگه Response بدست بیاریم. با بررسی بخشی از این درخواست توسط “vc_shortcodes-custom-css” شروع می‌کنیم.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

با انجام یک جستجوی ساده از این خطا میتونیم بفهمیم که این مشکل مربوط به افزونه ویژوال کامپوزر هست و از اون نشات میگره. این شاخص‌ها چقدر گوگل رو شگفت زده می‌کنند. 😀

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

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

رفع مشکل admin-ajax.php بخاطر افزونه هشدار وردپرس

مورد بعدی که بیشتر باعث به وجود اومدن خطای admin-ajax در وردپرس میشه مربوط به افزونه‌های ارسال هشدار در وردپرس هست. همونطور که در تصویر زیر میبینید با یک جهش نسبتا بزرگ در admin-ajax وردپرس روبه رو هستیم که در هنگام تست توسط سایت GTmetrix با اون مواجه شدیم.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

همونطور که در نمونه قبلی هم انجام دادیم در اینجا هم اگر روی درخواست POST admin-ajax.php کلیک کنید خواهید دید که داده های پست “action = mtsnb_add_impression & bar_id = 88 & ab_variation = none” نمایش داده خواهند شد.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

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

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

پس همونطور که میبینید راه‌های خوبی برای فهمیدن اینکه مشکل admin-ajax.php وردپرس بخاطر چی هست وجود داره که در اینجا ما به استفاده از سایت GTmetrix و جستجوی خطا در گوگل بسنده کردیم. اگر شما یک توسعه دهنده هستید میتونید از راه‌های دیگه هم استفاده کنید.

راه مطمئن برای تعیین منبع مشکل admin-ajax.php در وردپرس

یک راه ساده و پیش پا افتاده هم وجود داره که معمولا برای یافتن خطا در وردپرس از این روش زیاد استفاده کردیم. در این روش کافیه در هر بار یکی از افزونه‌ها را غیرفعال کرده و تست سرعت روی سایتتون رو انجام بدین، در نهایت بعد از غیرفعال کردن افزونه‌ها در جایی با غیرفعال کردن یکی از افزونه‌ها میبینید که خطا برطرف میشه و مشخص میشه که مشکل از این افزونه هست. این خطا معمولا به خوبی جواب میده و در 99 درصد تست‌هایی که با این روش صورت گرفته به نتیجه خواهید رسید. البته میتونید این کار رو به صورت برعکس هم انجام بدین. یعنی همه افزونه‌ها رو غیرفعال کنید و این بار یکی یکی هر افزونه را فعال کرده و در هر بار فعال سازی افزونه یک بار تست سرعت هم انجام بدین، اگر دیدین که خطای admin-ajax با فعال کردن یکی از افزونه‌ها صورت گرفت مشخص خواهد شد که مشکل از اینجاست.


2. مصرف بالای CPU در پیشخوان وردپرس توسط admin-ajax.php

دومین مسئله‌ای که باعث به وجود اومدن این مشکل میشه زمانی هست که Heartbeat API وردپرس برای اینکه بتونه با استفاده از Ajax توسط مرورگر داده‌هایی رو ارسال و دریافت بکنه با این خطا مواجه شده و باعث به وجود اومدن مصرف بیش از حد CPU در پیشخوان وردپرس خواهد شد. هر درخواست آجاکس که در این حالت در وردپرس بارگذاری میشه در حالتی هست که همه داده‌ها به صورت کش شده هم هستند. معمولا این نوع خطاها را در تست سرعت بخاطر اینکه در پیشخوان وردپرس به وجود میاد نمیبینید. این مشکل بیشتر در هاست‌های اشتراکی که چندین وبسایت روی یک سرور قرار دارند به وجود میاد. پیشنهادی که برای کاهش این نوع خطا در پیشخوان وردپرس دارم این هست که:

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

همونطور که در بالا هم اشاره شد وردپرس برای بررسی درخواست‌ها به صورت آجاکس در هر 15 ثانیه از طریق مرورگر درخواستی رو به سرور ارسال میکنه، حالا اگر تغییراتی اعمال شده باشه پاسخ ارسال میشه. این حالت رو اگر زمانی در نظر بگیرید که چندین تب باز کردید و یا اینکه تب ها همگی مربوط به صفحه ویرایش نوشته هستند، باعث به وجود اومدن فاجعه در وردپرس خواهد شد. حالا این فاجعه زمانی بدتر خواهد شد که در یک سایت بزرگ و  پربازدید که چندین نویسنده در اون فعالیت دارند همزمان در حال نوشتن و تولید محتوا باشند. در این صورت به نظر شما چه اتفاقی خواهد افتاد؟ مشخص است که این درخواست‌ها همینطور در حال تکثیر شدن و بیشتر شدن خواهند بود. طق یک بررسی که روی سایت DARTDrones انجام گرفته در حالتی که در مدت 24 ساعت از یک روز که فقط 2.000 بازدیدکننده یکتا در این سایت بود هنگام کار با سایت بیش از 4.100 درخواست ارسال و دریافت شده بود. این میزان اصلا بهینه نیست.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

برای اینکه این درخواست‌ها رو کمتر کنید میتونید از روش‌هایی مثل غیرفعال کردن رونوشت خودکار در وردپرس، افزایش زمان ذخیره خودکار نوشته به عنوان پیش نویس و… استفاده کنید. همچنین یک راه ساده هم برای این کار وجود داره که با استفاده از افزونه میتونید این کار را انجام بدین.

افزونه کاهش تعداد درخواست‌های admin-ajax در وردپرس

افزونه‌ای که برای کاهش میزان درخواست‌های admin-ajax در وردپرس قصد دارم معرفی کنم با عنوان Heartbeat Control در مخزن وردپرس به ثبت رسیده و تاکنون هم موفق شده بیش از 80.000 نصب فعال و کسب امتیاز 4.6 را ازآن خودش بکنه که با استفاده کردن از این افزونه میتونید اقدام به مدیریت درخواست‌ها و وظایفی در وردپرس که باعث کاهش کارهای admin-ajax در وردپرس خواهد شد بکنید. برای استفاده از این افزونه ابتدا روی دکمه زیر کلیک کنید تا به صفحه افزونه در مخزن وردپرس هدایت بشید و سپس با استفاده از راهنمای نصب افزونه در وردپرس اقدام به نصب و فعال سازی افزونه بکنید.

دانلود افزونه Heartbeat Control

بعد از نصب و فعال سازی این افزونه مشابه تصویر زیر منویی با نام Heartbeat در بخش تنظیمات وردپرس اضافه میشه که با مراجعه به این منو میتونید درخواست‌ها را به صورت زیر مدیریت کنید.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

control heartbeat locations: این گزینه را روی حالت Allow only on post edit pages قرار بدین تا این کار صرفا در صفحه ویرایش نوشته و برگه که بیشتر مورد استفاده قرار میگیره انجام بشه.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

override heartbeat frequency: این گزینه را هم پیشنهاد می‌کنم روی حالت 60 ثانیه قرار بدین تا درخواست‌های API ارسالی از هر 60 ثانیه انجام بگیرند. دقت کرده باشید در قسمت اول مقاله گفتم که درخواست‌ها در حالت عادی از هر 15 ثانیه بررسی می‌شوند که با افزایش اون به 60 ثانیه میتونید مدت زمان رو بیشتر کرده و مصرف CPU که توسط admin-ajax.php زیاد شده رو مدیریت کرده و کاهش بدین.

رفع مشکل مصرف بالای CPU در وردپرس توسط فایل admin-ajax.php

در صورتی که از نسخه تجاری و پولی این افزونه هم استفاده کنید میتونید از قابلیت هایی مثل غیرفعال کردن لینک‌های RSD در وردپرس، حذف لینک‌های کوتاه، غیرفعال کردن فید وردپرس، حذف لینک‌های فید وردپرس، غیرفعال کردن پینگ بک در وردپرس و… استفاده کنید که در تصویر بالا قابل مشاهده هستند.

امیدوارم که این آموزش هم مورد توجه و پسند شما قرار گرفته باشه و با استفاده از اون تونسته باشید که خطای مصرف cpu در وردپرس به دلیل فایل admin-ajax.php رو در وردپرس برطرف کنید. در صورتی که در رابطه با این آموزش سوال یا مشکلی داشتید میتونید در بخش دیدگاه‌ها مطرح کنید تا در کوتاه‌ترین زمان ممکن پاسخگوی شما باشم.
4.2/5 - (15 امتیاز)

علی یزدان پرست

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

‫۱۴ دیدگاه ها

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

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

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

  3. سلام
    من کل افزونه های سایت رو غیر فعال کردم ولی باز هم تا دوتا پیج از قسمت ادمین رو باز می کنم cpu usage میره روی 100
    کسی می تونه کمک کنه در این مورد؟

  4. سلام جناب صادقی از آموزش خوبتون سپاسگزارم.
    خوشبختانه مشکل auto saving رونوشت ها با کدی که در function.php قرار دادم حل شد. اما متاسفانه هنوز هم به محض وارد شدن به پیشخوان و شروع ادیت نوشته و یا ایجاد نوشته جدید به صورت پیش نویش مصرف CPU بسیار بالا میره. حتی بعضی مواقع در بالای صفحه هشدار عدم ارتباط به من نشان میده که در مواقع قطع شدن اینترنت به نمایش در میاد. این درحالیه که تا زمانیکه وارد پیشخوان نشدم مصرف cpu بسیار پایین هستش.
    اگر راهنمایی و توصیه ای برای بنده دارین بسیار ممنون میشم از لطف شما.
    با تشکر.

  5. آقا خیلی دمت گرم. با روش بالا رفتم جلو و مچ افزونه پاپ آپ را گرفتم. سرعت لود سایت از 12 ثانیه به 4 ثانیه کاهش پیدا کرد.

  6. سلام وقت شما بخیر آیا این سایت بهینه هست؟ و از کجا می توان میزان استفاده از cpu را مشاهده نمود؟

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

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