قلب تپنده وردپرس و مصرف بسیار بالای منابع توسط فایل admin-ajax.php
از ورژن 3.6 وردپرس ویژگی اعلام گردید که به وردپرس اجازه ارتباط برقرار کردن با مرورگر کاربران را می دهد.این موجب راحتی و عدم رفرش نمودن سایت توسط کاربر گردد و خود صفحه بصورت اتوماتیک رفرش گردد.
قلب تپنده API ها از فایل /wp-admin/admin-ajax.php برای اجرای توابع ajax در مرورگر ها استفاده می کند . در تئوری این مقوله بسیار برای کاربران جالب می باشد اما در عمل این مورد باعث مصرف بسیار بالای پرازنده و یا CPU در هاست خواهد شد.
.
نحوه کارکردن این API
یکی از این موارد بروزرسانی صفحه داشبورد در وردپرس می باشد . درصورتیکه شما وارد وردپرس شده و صفحه را کوچک نمایید و شروع به کارهای دیگری کنید این صفحه بروز شده و موجب ایجاد پردازش هایی بروی سرور خواهد شد. این پردازش هر 60 ثانیه یکبار ایجاد درخواست از سرور را خواهد نمود.
00:29:30 "GET /wp-admin/index.php "http://example.com/wp-admin/index.php" 00:30:31 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:32:03 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:33:03 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:34:03 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:35:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:36:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:37:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:38:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:39:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:40:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:42:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:44:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:46:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:47:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:48:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:49:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:50:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:51:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:53:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:55:08 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:57:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 00:59:04 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 01:01:05 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php" 01:03:05 "POST /wp-admin/admin-ajax.php "http://example.com/wp-admin/index.php"
هر بار اجرای این اسکریپت باعث ایجاد لود زیادی روی پردازنده سرور خواهد شد.
php-cgi 0.26 secs Wed Feb 19 00:29 php-cgi 0.26 secs Wed Feb 19 00:30 php-cgi 0.23 secs Wed Feb 19 00:32 php-cgi 0.20 secs Wed Feb 19 00:33 php-cgi 0.22 secs Wed Feb 19 00:34 php-cgi 0.24 secs Wed Feb 19 00:35 php-cgi 0.20 secs Wed Feb 19 00:36 php-cgi 0.23 secs Wed Feb 19 00:37 php-cgi 0.23 secs Wed Feb 19 00:38 php-cgi 0.26 secs Wed Feb 19 00:39 php-cgi 0.22 secs Wed Feb 19 00:40 php-cgi 0.23 secs Wed Feb 19 00:42 php-cgi 0.22 secs Wed Feb 19 00:44 php-cgi 0.23 secs Wed Feb 19 00:46 php-cgi 0.25 secs Wed Feb 19 00:47 php-cgi 0.27 secs Wed Feb 19 00:48 php-cgi 0.23 secs Wed Feb 19 00:49 php-cgi 0.22 secs Wed Feb 19 00:50 php-cgi 0.21 secs Wed Feb 19 00:51 php-cgi 0.21 secs Wed Feb 19 00:53 php-cgi 0.21 secs Wed Feb 19 00:55 php-cgi 0.24 secs Wed Feb 19 00:57 php-cgi 0.25 secs Wed Feb 19 00:59 php-cgi 0.22 secs Wed Feb 19 01:01 php-cgi 0.23 secs Wed Feb 19 01:03
در صورتیکه این صفحه نیم ساعت باز باشد باعث اجرای 25 عدد اسکریپت php شده که خود این موضوع باعث مصرف 5.77 درصد پردازنده خواهد شد. البته این آمار بسیار زیاد نیست اما غیر لازم می باشد.
نحوه غیرفعال کردن پردازش های اصلی API
درصورتیکه مقدار مصرف منابع توسط وردپرس بالا رود می توانید اقدام به غیرفعال کردن API های اصلی وردپرس بنمایید. بصورت پیش فرض وردپرس از Heartbeat API برای مدیریت پست ها و ذخیره اتوماتیک استفاده می نماید.
نصب پلاگین Heartbeat
- در ابتدا در داشبورد لاگین نمایید.
- وارد قسمت افزونه ها و یا Plugin شده و اقدام به Add plugin بنمایید.
- در قسمت جست وجو بدنبال افزونه Heartbeat Control بگردید و دکمه Enter را بزنید.
- .
- با نمایش پلاگین همانند بالا اقدام به نصب آن بنمایید.
- پس از این مورد اقدام به کلیک بروی دکمه Activate Plugin بنمایید.
تنظیماتHeartbeat Control
- Now that you have the Heartbeat Control plugin installed, you will need to configure its settings. To access the settings page, hover over Tools on the left side menu bar and click on Heartbeat Control.
- برای انجام تنظیمات این افزونه در سرورهای سرو سرور بقسمت Tools رفته و روی Heartbeat Control کلیک کنید
- این صفحه شامل دو عدد منو دراپ مختلف می باشد. اولین منو بشما اجازه غیر فعال نمودن این افزونه تنها در کل سایت و یا در قسمت خاصی در وردپرس را می دهد .
- منوی دوم بشما اجازه می دهد زمان این درخواست را ویرایش نمایید برای مثال اجازه در خواست POST هر 15 ثانیه می نماید. این توسط قسمت heartbeat frequency قابل انجام می باشد.
- بعد از این اقدام به ذخیره مطلب بنمایید.