وردپرس وقتی CPU زیاد مصرف می‌کند که PHP بیش از حد لازم اجرا شود: یا صفحه‌ها برای هر بازدیدکننده از نو ساخته می‌شوند، یا کارهایی در پس‌زمینه بی‌وقفه اجرا می‌شوند. بازدید واقعی به‌ندرت مقصر اصلی است. هفت منبع زیر را به ترتیب بررسی کنید؛ سه مورد اول معمولاً بیشترین اثر را دارند.

اول ببینید مصرف کجاست

در سی‌پنل، Resource Usage نشان می‌دهد مصرف CPU در چه ساعت‌هایی بالاست. اگر در ساعات خلوت هم بالاست، علت پس‌زمینه‌ای است (موارد ۲ تا ۵). اگر فقط با بازدید بالا می‌رود، مورد ۱ و ۷ را ببینید.

بخش Resource Usage در سی‌پنل
نمودار مصرف CPU در Resource Usage سی‌پنل

۱. کش صفحه ندارید

بدون کش، هر بازدید یعنی اجرای کامل وردپرس، قالب و همه‌ی افزونه‌ها. با کش صفحه، PHP برای بازدیدکننده‌ی مهمان اصلاً اجرا نمی‌شود. روی هاست رایکت که وب‌سرورش LiteSpeed است، افزونه‌ی LiteSpeed Cache را نصب کنید. همین یک کار معمولاً بیشترین کاهش را می‌دهد.

۲. wp-cron با هر بازدید اجرا می‌شود

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

در wp-config.php:

define( 'DISABLE_WP_CRON', true );

و در Cron Jobs سی‌پنل، هر پانزده دقیقه:

wget -q -O /dev/null "https://example.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
صفحه Cron Jobs در سی‌پنل برای زمان‌بندی اجرای دستورها
ساخت کرون‌جاب در سی‌پنل برای اجرای wp-cron با فاصله‌ی مشخص

۳. Heartbeat پیشخوان

وقتی پیشخوان یا ویرایشگر نوشته باز است، وردپرس هر چند ثانیه یک درخواست به سرور می‌فرستد. چند زبانه‌ی باز از چند نویسنده، یعنی درخواست دائمی به admin-ajax.php. افزونه‌ی LiteSpeed Cache بخشی برای کنترل Heartbeat دارد: فاصله را بیشتر کنید و در بخش کاربری سایت خاموشش کنید. زبانه‌های بی‌استفاده‌ی پیشخوان را هم ببندید.

۴. ربات‌ها و تلاش برای ورود

ربات‌هایی که مدام wp-login.php را امتحان می‌کنند، برای هر تلاش PHP را اجرا می‌کنند. در بخش Visitors سی‌پنل آدرس‌های پرتکرار را ببینید.

۵. xmlrpc.php

این فایل برای اتصال اپلیکیشن‌ها و سرویس‌های بیرونی است و هدف محبوب حمله‌هاست. اگر از اپ موبایل وردپرس یا Jetpack استفاده نمی‌کنید، آن را در htaccess. ببندید:

<Files xmlrpc.php>
Require all denied
</Files>

۶. جستجوی داخلی سایت

جستجوی وردپرس کش نمی‌شود و روی دیتابیس سنگین است. ربات‌ها گاهی هزاران آدرس جستجو را می‌خزند. آدرس‌های جستجو را در robots.txt ببندید و اگر جستجوی زنده (پیشنهاد همزمان با تایپ) دارید، مطمئن شوید با هر حرف یک درخواست نمی‌فرستد.

۷. افزونه‌های پرمصرف

نوع افزونه چرا پرمصرف است جایگزین
آمار بازدید داخلی هر بازدید را در دیتابیس می‌نویسد ابزار آمار بیرونی
مطالب مرتبط کوئری سنگین در هر صفحه لینک دستی یا افزونه‌ی سبک
بررسی لینک شکسته دائم در پس‌زمینه می‌خزد بررسی دوره‌ای با ابزار بیرونی
بکاپ‌گیر داخلی فشرده‌سازی با PHP وسط روز بکاپ سی‌پنل یا زمان‌بندی نیمه‌شب
چند افزونه‌ی امنیتی همزمان هر درخواست را چند بار بررسی می‌کنند فقط یکی
صفحه افزونه‌های وردپرس
هر افزونه‌ی فعال در هر درخواست اجرا می‌شود؛ بلااستفاده‌ها را حذف کنید

نسخه‌ی PHP

نسخه‌های جدیدتر PHP همان کار را با پردازش کمتری انجام می‌دهند. اگر قالب و افزونه‌ها سازگارند، نسخه را بالا ببرید.

اگر بعد از همه‌ی این‌ها مصرف هنوز بالاست

یعنی مصرف واقعی است و سایت رشد کرده. هاست وردپرس حرفه‌ای هسته و رم بیشتری در پلن‌هایش دارد و عددشان در جدول پلن‌ها نوشته شده. برای سایت‌های پربازدید، هاست پربازدید. نشانه‌های زمان ارتقا در این مقاله هست.

سوال‌های رایج

خاموش کردن wp-cron چیزی را خراب نمی‌کند؟

نه، به شرطی که کرون‌جاب جایگزین را ساخته باشید. بدون آن، نوشته‌های زمان‌بندی‌شده منتشر نمی‌شوند.

مصرف رم هم با همین کارها کم می‌شود؟

بله. هر اجرای PHP حافظه می‌گیرد؛ وقتی تعداد اجراها کم شود، مصرف حافظه هم پایین می‌آید.

از کجا بفهمم کدام افزونه مقصر است؟

روش حذفی را در عیب‌یابی کندی وردپرس توضیح داده‌ایم.

بیشتر بخوانید: بهترین نسخه و تنظیمات PHP برای وردپرس.