محدود کردن WordPress Heartbeat API فرآیندی است که با کاهش فراوانی درخواستهای admin-ajax.php که در پسزمینه پنل مدیریت وردپرس اجرا میشوند، مصرف CPU را کاهش میدهد. بهخصوص در هاستینگهای اشتراکی، فروشگاههای پرمخاطب ووکامرس و وبلاگهای چندنویسنده، Heartbeat API ممکن است هر ۱۵ تا ۶۰ ثانیه یک درخواست به سرور ارسال کند؛ این موضوع میتواند باعث مصرف غیرضروری CPU، کندی پنل مدیریت و دریافت هشدارهای محدودیت منابع شود. راهکار به جای غیرفعال کردن کامل API، افزایش فاصله زمانی به ۶۰ تا ۱۲۰ ثانیه بر اساس هر صفحه، فعال نگه داشتن آن فقط در بخشهای ضروری و سنجش نتایج با کنترل پنل هاستینگ است.
در این راهنمای جامع، کاربرد Heartbeat API، زمان بروز مشکلات آن، تنظیمات امن و چگونگی کاهش موثر مصرف CPU در سایت وردپرس شما را به صورت گام به گام بررسی میکنیم. هدف اصلی محدود کردن ترافیک غیرضروری پسزمینه بدون آسیب به قابلیتهای مفیدی مثل ذخیره خودکار و کنترل نشست کاربری است. اگر سایت شما به طور مکرر با خطاهای ۵۰۸ Resource Limit، ۵۰۳ Service Unavailable یا کندی پنل مدیریت وردپرس مواجه است، این تنظیمات از اولین گزینههای بهینهسازی محسوب میشود.
WordPress Heartbeat API چیست؟
WordPress Heartbeat API مکانیزمی است که ارتباط منظم و دورهای بین مرورگر و سرور وردپرس برقرار میکند. این ارتباط معمولاً از طریق فایل /wp-admin/admin-ajax.php انجام میشود. وردپرس با استفاده از این سیستم، در صفحه ویرایشگر به صورت خودکار پیشنویسها را ذخیره میکند، اطلاع میدهد که کاربر دیگری در حال ویرایش همان نوشته است، وضعیت نشست کاربر را کنترل میکند و برخی اعلانهای زمان واقعی افزونهها را فعال مینماید.
یک مثال ساده: وقتی یک نویسنده در صفحه ویرایش نوشته مشغول کار است، وردپرس برای جلوگیری از از دست رفتن تغییرات، در بازههای مشخص درخواستهای کوچکی به سرور ارسال میکند. این درخواستها به تنهایی بار زیادی ایجاد نمیکنند. اما اگر به طور همزمان ۸ نویسنده، ۲ مدیر و یک تیم که پنل ووکامرس را باز دارند فعال باشند، تعداد درخواستها به سرعت افزایش مییابد. به طور تقریبی ۱۰ نشست فعال مدیریت با فاصله ۳۰ ثانیه حدود ۱۲۰۰ درخواست Heartbeat در ساعت ایجاد میکنند. اگر افزونهها اطلاعات اضافی به این درخواستها اضافه کنند، مصرف CPU ممکن است بسیار بالاتر از حد انتظار شود.
بنابراین Heartbeat API ذاتاً بد نیست؛ اما اگر با فواصل زمانی کوتاه، در صفحات غیرضروری یا همراه با افزونههای سنگین اجرا شود، باعث بروز مشکلات عملکردی میشود. در سایتهای بهینه، API فعال است اما نرخ درخواستها تحت کنترل قرار دارد.
چرا Heartbeat API مصرف CPU را افزایش میدهد؟
مصرف CPU به میزان قدرت پردازشی گفته میشود که سرور برای اجرای فرآیندهای PHP به کار میبرد. وردپرس به عنوان یک سیستم مدیریت محتوای پویا، در هر درخواست PHP، بخشهایی از قالب، افزونهها، دیتابیس و هسته وردپرس را بارگذاری و اجرا میکند. درخواستهای Heartbeat هرچند کوچک به نظر میرسند، هر بار یک پردازش PHP را راهاندازی میکنند.
دلایل رایج افزایش CPU عبارتند از:
- فواصل زمانی بسیار کوتاه درخواستها: در برخی صفحات Heartbeat ممکن است تا هر ۱۵ ثانیه یک بار اجرا شود که برای یک کاربر تنها، ۲۴۰ درخواست در ساعت است.
- باز بودن چند تب مرورگر: اگر کاربر در پنل مدیریت وردپرس چهار تب مختلف باز داشته باشد، هر تب درخواستهای Heartbeat جداگانه ایجاد میکند.
- افزونههای سنگین: افزونههای امنیتی، آمارگیر، پشتیبانگیری، صفحهساز و ووکامرس بار اضافی به درخواستهای Heartbeat اضافه میکنند.
- هاستینگ با منابع محدود: در بستههای با محدودیت CPU پایین، حتی درخواستهای کوچک پسزمینه در ساعات پیک میتوانند باعث رسیدن به حد مجاز مصرف شوند.
- تداخل ترافیک کاربران و رباتها: درخواستهای پسزمینه پنل مدیریت و ترافیک بازدیدکنندگان در قسمت جلویی سایت از همان منابع سرور استفاده میکنند.
اگر در لاگ دسترسی (access log) سرور مشاهده میکنید که درخواستهای admin-ajax.php به طور مکرر تکرار میشوند، باید ترافیک Heartbeat بررسی شود. در زیرساخت Hostragons میتوانید نمودارهای مصرف منابع و نوسانات CPU را مشاهده و بر اساس نیاز سایت خود، بستههای مناسبتر هاستینگ وردپرس را انتخاب کنید.
آیا غیرفعال کردن کامل Heartbeat API توصیه میشود؟
پاسخ کلی: خیر، برای اکثر سایتها توصیه نمیشود. غیرفعال کردن کامل Heartbeat API ممکن است مصرف CPU را کوتاه مدت کاهش دهد اما عملکردهایی مانند ذخیره خودکار نوشته، قفلگذاری محتوا، تمدید نشست کاربران و برخی اعلانهای افزونهها مختل میشود. به ویژه در وبلاگهای چندنویسنده، ویرایش همزمان نوشته توسط دو نفر میتواند باعث از دست رفتن محتوا شود.
رویکرد ایمنتر این است که API را فقط در بخشهای ضروری فعال نگه داریم و فاصله زمانی اجرای آن را افزایش دهیم. مثلاً در صفحه ویرایش نوشته ۶۰ ثانیه، در پنل مدیریت ۹۰ تا ۱۲۰ ثانیه و در بخش جلویی سایت به طور کامل غیرفعال کردن، برای اکثر سایتهای سازمانی تعادل خوبی ایجاد میکند. در فروشگاههای ووکامرس، بخشهای سفارش و مدیریت موجودی باید با دقت بیشتری آزمایش شوند.
جدول تنظیمات پیشنهادی Heartbeat API
| سناریو | تنظیم پیشنهادی | تاثیر مورد انتظار | نکات مهم |
|---|---|---|---|
| وبلاگ تک نویسنده | پنل مدیریت ۱۲۰ ثانیه، ویرایشگر ۶۰ ثانیه، جلوی سایت غیرفعال | کاهش قابل توجه درخواستهای admin-ajax | بازه ذخیره خودکار تست شود |
| سایت چند نویسنده | ویرایشگر ۶۰ ثانیه، پنل مدیریت ۹۰-۱۲۰ ثانیه | کاهش مصرف CPU، حفظ قفل محتوا | تعداد تبهای باز نویسندگان نظارت شود |
| فروشگاه ووکامرس | پنل مدیریت ۶۰-۹۰ ثانیه، جلوی سایت با دقت غیرفعال شود | کاهش بار پنل مدیریت | فرآیندهای سبد خرید و پرداخت بررسی شوند |
| سایت شرکتی و معرفی | پنل مدیریت ۱۲۰ ثانیه، جلوی سایت غیرفعال | ایمنترین کاهش بار | فرمها و افزونههای امنیتی کنترل شوند |
| سایت با هشدار محدودیت منابع | ابتدا ۶۰ سپس ۱۲۰ ثانیه تست شود | کاهش قلههای مصرف CPU | اندازهگیری با لاگها و نمودارهای هاستینگ ضروری است |
این جدول نقطه شروع است. بهترین تنظیمات بسته به تعداد کاربران، ساختار افزونهها، سنگینی قالب و منابع هاستینگ متفاوت است. تغییرات بدون اندازهگیری ممکن است مشکل CPU را پنهان کنند ولی ریشهای حل نکنند.
چگونه Heartbeat API را محدود کنیم؟
برای محدود کردن WordPress Heartbeat API سه روش کاربردی وجود دارد: استفاده از افزونه، افزودن کد به فایل توابع قالب (functions.php) یا بهرهگیری از تنظیمات افزونههای بهینهسازی. اگر دانش فنی کمی دارید، استفاده از افزونه سادهتر و امنتر است. توسعهدهندگان میتوانند با یک قطعه کد کنترلی دقیقتر اعمال کنند.
۱. روش اول: محدود کردن با افزونه Heartbeat Control
سادهترین راه استفاده از افزونهای است که برای مدیریت ترافیک Heartbeat طراحی شده است. افزونه Heartbeat Control ارائه شده توسط WP Rocket یا نمونههای معتبر دیگر امکان تعریف قوانین جداگانه برای بخشهای مختلف را فراهم میکنند.
مراحل:
- وارد پیشخوان وردپرس شوید و به بخش افزونهها > افزودن بروید.
- عبارت Heartbeat Control را جستجو کنید و افزونه معتبر و بهروز را نصب کنید.
- پس از فعالسازی، به صفحه تنظیمات افزونه بروید.
- تعداد درخواستها برای داشبورد یا پنل مدیریت را روی ۶۰ یا ۱۲۰ ثانیه تنظیم کنید.
- در صفحه ویرایش نوشته به جای غیرفعال کردن کامل، فاصله ۶۰ ثانیه را انتخاب کنید.
- در بخش جلویی سایت Heartbeat را غیرفعال یا روی بیشترین فاصله تنظیم کنید.
- تنظیمات را ذخیره کنید و حداقل ۲۴ ساعت مصرف CPU را زیر نظر بگیرید.
مزیت این روش برگشتپذیری سریع است؛ در صورت بروز مشکل میتوانید افزونه را غیرفعال و رفتار پیشفرض وردپرس را بازگردانید. عیب آن اضافه شدن افزونه جدید به سایت است؛ اگر میخواهید تعداد افزونهها کم باشد، روش افزودن کد مناسبتر است.
۲. روش دوم: تغییر فاصله Heartbeat با کد در functions.php
اگر میخواهید محدودسازی را با کد انجام دهید، تغییر را مستقیماً در قالب اصلی انجام ندهید و ترجیحاً کد را در فایل functions.php قالب فرزند (child theme) یا افزونه اختصاصی کوچک سایت قرار دهید تا با بهروزرسانی قالب تنظیمات از بین نرود.
نمونه کد زیر فاصله Heartbeat را به ۶۰ ثانیه افزایش میدهد:
add_filter('heartbeat_settings', 'hostragons_heartbeat_interval'); function hostragons_heartbeat_interval($settings) { $settings['interval'] = 60; return $settings; }
این کد فواصل کوتاهتر پیشفرض را به ۶۰ ثانیه میرساند و تعداد درخواستها را به طور نظری ۷۵ درصد کاهش میدهد. برای مثال اگر ۵ نشست مدیریتی فعال باشد، به جای تقریباً ۱۲۰۰ درخواست در ساعت، حدود ۳۰۰ درخواست خواهیم داشت. میزان کاهش واقعی به پردازش اضافی افزونهها نیز بستگی دارد.
اگر میخواهید ساختار سختگیرانهتری داشته باشید، میتوانید Heartbeat را در بخش جلویی سایت غیرفعال و فقط در پنل مدیریت فعال نگه دارید:
add_action('init', 'hostragons_disable_heartbeat_frontend', 1); function hostragons_disable_heartbeat_frontend() { if (!is_admin()) { wp_deregister_script('heartbeat'); } }
این کد اسکریپت Heartbeat را در سمت کاربر غیرفعال میکند. اما اگر سایت شما امکاناتی مثل عضویت، اعلان زنده، سبد خرید یا ویرایشگر جلویی دارد، حتماً قبل از استفاده آن را تست کنید. در صورت بروز اشکال در صفحات ووکامرس مانند پرداخت یا سبد خرید، بهتر است به جای کد از افزونه با تنظیمات صفحهمحور استفاده شود.
۳. روش سوم: مدیریت با افزونههای WP Rocket یا بهینهسازی
برخی افزونههای کش و بهینهسازی مثل WP Rocket تنظیمات Heartbeat را در بخش تنظیمات خود ارائه میدهند. در این افزونهها میتوانید برای پنل مدیریت، ویرایشگر نوشته و بخش جلویی سایت سطحبندیهای مختلفی انتخاب کنید. این روش نیاز به نصب افزونه جداگانه را کاهش میدهد، به شرطی که افزونه بهینهسازی را قبلاً استفاده میکنید.
هنگام استفاده از افزونههای متعدد مراقب باشید تنظیمات مشابه را دو بار فعال نکنید. مثلاً هم تنظیمات Heartbeat داخل WP Rocket و هم افزونه Heartbeat Control را همزمان روشن نکنید چون باعث تداخل یا رفتار غیرمنتظره میشود. در بهینهسازی وردپرس قانون اصلی این است: فقط یک ابزار برای هر وظیفه استفاده کنید، نتایج را ارزیابی کنید و سپس تغییر جدید اعمال نمایید.
یافتن تنظیم مناسب با اندازهگیری مصرف CPU
قبل و بعد از تغییر تنظیمات Heartbeat، اندازهگیری دقیق مصرف منابع ضروری است. فقط سریعتر شدن پنل مدیریت کافی نیست؛ نمودار مصرف CPU، تعداد پردازشهای PHP، لاگ دسترسی و لاگ خطا باید همزمان بررسی شوند.
برنامه تست پیشنهادی:
- اندازهگیری اولیه: ۲۴ ساعت قبل از تغییر مصرف CPU و RAM را ثبت کنید.
- بررسی لاگ دسترسی: تعداد و دفعات درخواستهای
admin-ajax.phpرا کنترل کنید. - اعمال تغییر اول: فاصله Heartbeat را روی ۶۰ ثانیه تنظیم و در بخش جلویی سایت غیرفعال کنید.
- صبر ۲۴ تا ۴۸ ساعت: مصرف CPU را در شرایط ترافیکی مشابه زیر نظر بگیرید.
- در صورت نیاز فاصله ۱۲۰ ثانیه را آزمایش کنید: به خصوص در سایتهای سازمانی فواصل طولانیتر مشکلی ایجاد نمیکند.
- آزمایش عملکردهای حیاتی: ذخیره خودکار نوشته، سبد ووکامرس، مدیریت سفارش و فرآیند عضویت را تست نمایید.
مثلاً در یک سایت شرکتی که پنل مدیریت باز است و مصرف CPU به ۸۰ تا ۹۰ درصد میرسد، افزایش فاصله از ۱۵ به ۶۰ ثانیه میتواند پیکهای مصرف را ۲۰ تا ۴۰ درصد کاهش دهد. اما اگر افزونه پشتیبانگیری هر ساعت اسکن کامل انجام دهد، بهینهسازی Heartbeat به تنهایی کافی نیست. در این شرایط باید بهینهسازی سرعت وردپرس و استفاده از منابع هاستینگ را هم همزمان بررسی کرد.
آیا همیشه admin-ajax.php ناشی از Heartbeat است؟

خیر. فایل admin-ajax.php در وردپرس توسط بخشها و افزونههای مختلفی استفاده میشود. Heartbeat API تنها یکی از آنهاست. افزونههای فرمساز، جستجوی زنده، اسکن امنیتی، بهروزرسانی سبد خرید ووکامرس و برخی قابلیتهای قالب نیز از همین فایل درخواست ارسال میکنند.
بنابراین مشاهده ترافیک بالا در admin-ajax.php لزوماً به معنی مشکل Heartbeat نیست. در ابزارهای توسعه مرورگر، در تب Network میتوانید مقدار action=heartbeat را در قسمت payload درخواستها جستجو کنید. اگر مقدار دیگری است، مشکل از افزونه یا قابلیت دیگری است.
همچنین تحلیل لاگ سرور برای بررسی IP، زمان و صفحات ارجاعدهنده درخواستها ضروری است. در صورت ترافیک رباتی، راهکارهایی مثل فایروال، محدودسازی نرخ درخواست (rate limit) یا محافظت از رباتها بهتر جواب میدهد. برای افزایش امنیت و بهبود عملکرد، بروز نگه داشتن گواهینامه SSL سایت نیز اهمیت دارد.
اشتباهات رایج هنگام محدود کردن Heartbeat
در جستجوی راهحل سریع مشکلات عملکرد وردپرس، برخی اشتباهات میتواند عملکرد سایت را مختل کند. موارد زیر به خصوص در سایتهای زنده اهمیت دارد:
- غیرفعال کردن کامل API در همه صفحات: ذخیره خودکار و قفل محتوا ممکن است از کار بیفتد.
- افزودن کد بدون تست در سایت زنده: خطاهای نحوی ممکن است باعث صفحه سفید شود.
- بررسی نکردن فرآیند پرداخت ووکامرس: ممکن است مشکلاتی در سبد خرید و سفارش رخ دهد.
- استفاده همزمان از چند افزونه بهینهسازی مشابه: تداخلها تشخیص مشکل را دشوار میکند.
- نسبت دادن کل مشکل CPU فقط به Heartbeat: کوئریهای سنگین، ترافیک رباتها یا کرون جابها هم ممکن است عامل باشند.
- تغییر بدون گرفتن نسخه پشتیبان: بازگرداندن تغییرات به دلیل خطا طولانی میشود.
پیش از هر تغییر، تهیه بکاپ از فایلها و دیتابیس بهترین روش است. اگر میخواهید دامنه، هاست و مدیریت سایت را در یک پنل داشته باشید، استفاده از خدمات بررسی دامنه و هاستینگ وب به شما کمک میکند زیرساخت خود را منظمتر نگه دارید.
اقدامات مکمل کاهش مصرف CPU فراتر از Heartbeat API
محدود کردن Heartbeat گام مهمی است اما بهینهسازی مصرف CPU در وردپرس یک فرآیند جامعتر است. برای حفظ عملکرد پایدار باید اقدامات زیر را هم انجام دهید:
استفاده از کش
کش صفحه، بار PHP و پایگاه داده را به طور قابل توجهی کاهش میدهد. وقتی صفحات به صورت استاتیک ذخیره شوند، هر بازدیدکننده مجبور نیست هسته وردپرس را از نو بارگذاری کند؛ این یکی از موثرترین روشهای کاهش مصرف CPU است.
حذف افزونههای غیرضروری
افزونههای غیرفعال هم ممکن است اثراتی بر دیتابیس داشته باشند. تعداد افزونهها مهم نیست، بلکه تاثیر اجرایی آنها اهمیت دارد. افزونههای آمار، امنیت، صفحهساز و پشتیبانگیری را مرتب بررسی و بهینه کنید.
کنترل WP-Cron
سیستم کرون وردپرس ممکن است با هر بازدید فعال شود که در سایتهای پربازدید باعث افزایش مصرف CPU میشود. اجرای کرون به صورت زمانبندی شده با کرون سیستم عامل به کنترل بهتر منابع کمک میکند. اگرچه این موضوع با Heartbeat متفاوت است اما به کاهش بار پسزمینه کمک میکند.
بهینهسازی دیتابیس
ذخیره نسخههای بازبینی، دادههای موقت، دیدگاههای هرزنامه و رکوردهای قدیمی میتواند دیتابیس را سنگین کند. پاکسازی منظم سرعت کوئریها را افزایش میدهد. در سایتهای ووکامرس به دلیل رشد جداول سفارشات و نشستها، این موضوع اهمیت بیشتری دارد.
نسخه PHP و منابع هاستینگ
استفاده از نسخههای بهروز PHP معمولاً عملکرد بهتری دارد. قالب و افزونههای سازگار با PHP ۸ به طور کلی مصرف CPU کمتری دارند. اما بهینهسازی نرمافزاری باید همراه با زیرساخت مناسب هاستینگ باشد. اگر سایت شما رشد کرده است، بررسی گزینههایی مثل سرور VPS یا هاست وردپرس مقیاسپذیر منطقی است.
نقشه راه پیشنهادی برای اجرای ایمن
برای محدود کردن Heartbeat API در سایت زنده وردپرس، رعایت ترتیب زیر ایمنی و نتایج قابل اندازهگیری را تضمین میکند:
- ابتدا بکاپ کامل تهیه کنید.
- مصرف فعلی CPU، RAM و ترافیک admin-ajax.php را ثبت کنید.
- مطمئن شوید Heartbeat عامل اصلی درخواستهای بالا است.
- Heartbeat را در بخش جلویی غیرفعال یا با بیشترین فاصله تنظیم کنید.
- در ویرایشگر نوشته فاصله کمتر از ۶۰ ثانیه انتخاب نکنید.
- فواصل ۹۰ تا ۱۲۰ ثانیه را در پنل مدیریت تست نمایید.
- عملکرد ووکامرس، عضویت و فرمها را به صورت دستی بررسی کنید.
- مصرف منابع را پس از ۲۴-۴۸ ساعت مقایسه کنید.
- اگر نتیجه کافی نبود، سایر منابع بار را مثل افزونهها و کرون تحلیل کنید.
این روش به جای تکیه بر یک تنظیم، بهینهسازی مبتنی بر داده و سنجش مداوم را فراهم میآورد. هدف مدیریت مصرف CPU در کنار حفظ پایداری و تجربه کاربری عالی است.
نتیجهگیری: Heartbeat را حذف نکنید، هوشمندانه محدود کنید
محدود کردن WordPress Heartbeat API در صورت اجرای صحیح، مصرف CPU را کاهش داده، پنل مدیریت را روانتر میکند و استفاده بهینهتر از منابع هاستینگ را ممکن میسازد. بهترین روش این است که API را در بخش جلویی سایت محدود یا غیرفعال کنید، در ویرایشگر فاصلههای امن اعمال کنید و در پنل مدیریت بین ۶۰ تا ۱۲۰ ثانیه تنظیم نمایید.
اگر مشکل مصرف CPU همچنان ادامه داشت، Heartbeat صرفاً نقطه شروع است؛ کش، افزونهها، کرون، دیتابیس و نوع هاستینگ باید به طور جامع بررسی شوند. برای زیرساختی پایدارتر میتوانید راهکارهای هاستینگ وردپرس را در Hostragons مشاهده و متناسب با نیاز سایت خود برنامه ارتقاء ملایم داشته باشید.
سوالات متداول
آیا باید WordPress Heartbeat API را به طور کامل غیرفعال کرد؟
برای اکثر سایتها توصیه نمیشود. عملکردهایی مانند ذخیره خودکار، قفل محتوا و کنترل نشست ممکن است مختل شوند. راهکار امنتر غیرفعال کردن در بخش جلویی و افزایش فاصله به ۶۰ تا ۱۲۰ ثانیه در پنل مدیریت و ویرایشگر است.
محدود کردن Heartbeat API چقدر مصرف CPU را کاهش میدهد؟
این موضوع به ساختار سایت بستگی دارد. افزایش فاصله از ۱۵ به ۶۰ ثانیه میتواند تعداد درخواستها را تا ۷۵ درصد کاهش دهد، اما کاهش واقعی CPU وابسته به افزونهها، تعداد کاربران و منابع هاستینگ است.
آیا همیشه مصرف بالا در admin-ajax.php ناشی از Heartbeat است؟
خیر. افزونهها و قابلیتهای مختلفی از این فایل استفاده میکنند. برای تشخیص میتوانید در ابزار توسعه مرورگر مقدار action=heartbeat را بررسی نمایید.
محدود کردن Heartbeat در فروشگاه ووکامرس امن است؟
بله، اما باید دقیق تست شود. فرآیندهای سبد خرید، پرداخت، مدیریت سفارش و موجودی باید تحت نظر قرار گیرند. معمولاً افزایش فاصله بهتر از غیرفعال کردن کامل است.
بعد از تغییر تنظیمات Heartbeat چقدر باید تست کنیم؟
حداقل ۲۴ تا ۴۸ ساعت توصیه میشود. در این مدت باید نمودارهای مصرف CPU، تعداد درخواستهای PHP، درخواستهای admin-ajax.php و عملکرد کلیدی سایت را زیر نظر گرفت. اگر ترافیک سایت متغیر است، اندازهگیری طولانیتر بهتر است.