کاهش مصرف CPU در وردپرس



چگونه مصرف cpu وردپرس را کاهش دهیم [16 راه حل]

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

 

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

اگر از وب سرور آپاچی استفاده میکنید، وب سرور apache بازدهی کمتری به نسبت LiteSpeed دارد و استفاده از این وب سرور کمک بیشتری برای سریعتر کردن پاسخ به درخواست های سایت وردپرسی میدهد. همیشه سعی کنید پلاگین های وردپرس را آپدیت نگه دارید. افزونه هایی که نسخه بتا دارند نصب نکنید. از پلاگین های cache استفاده کنید، افزونه‌ های کش میتوانند با ذخیره کردن کپی‌ صفحات ثابت، فشار مصرف CPU را به طور چشمگیری کاهش دهند. فایل های استاتیک از CPU و حافظه کمتری استفاده می کنند.

 

1. استفاده از وب سرور لایت اسپید (litespeed)

طبق بعضی گزارشات سایت های خارجی با ارتقا به وب سرور LiteSpeed، بعضی از کاربران شاهد کاهش 75% + در استفاده از CPU بودند. LiteSpeed ​​ مدیریت بهتری برای CPU/ram دارد و بهینه سازی بهتری انجام میشود که باعث میشود سریعتر باشد و میتواند ترافیک بیشتری را در مقایسه با Apache مدیریت کند.

 

2. غیرفعال کردن افزونه های که مصرف منابع بالا دارند

برخی از افزونه ها در پس زمینه اجرا میشوند که باعث افزایش مصرف CPU میشود. هر افزونه ای که باید داده ها را جمع آوری کند، احتمالا از دلایل اصلی مصرف خواهد بود. مثلا گزارش ترافیک زنده Wordfence، گزارش های Rank Math’s 404 logs و افزون های Google Analytics یا حتی افزونه هایی مانند Broken Link Checker و Query Monitor باشد که به طور مداوم وب سایت شما را اسکن می کنند و نیاز به پردازش دارند.

برخی از افراد ممکن است به شما بگویند که پلاگین ها را یک به یک غیرفعال و دوباره فعال کنید تا متوجه بشید که کدام افزونه در حال مصرف CPU وردپرس است. میتوانید از Query Monitor استفاده کنید، Query Monitor – کندترین افزونه ها را میتواند پیدا کنید. پس از نصب، یکی از صفحات سایت خود را باز کنید و منوی Query Monitor را در نوار مدیریت وردپرس پیدا کنید و به Queries → Queries by component بروید.

نصب تعداد زیادی از افزونه ها، باعث بالا رفتن منابع و بخصوص مصرف CPU میشود. نصب افزونه هایی مانند WPStatic که یک افزونه آمارگیر است، بشدت مصرف منابع سرور یا هاست شما را بالا میبرد، برای آمارگیری سایت خودتون نیازی به ذخیره تعداد بازدیدهای ماه های گذشته و نگهداری اون در دیتابیس ندارید، برای مشاهده و بررسی آمار سایت میتونید از سایت های آمارگیری مانند Google Analytics استفاده کنید.

اما برای بررسی اینکه آیا مشکل از افزونه ها است و دقیقا کدومیک از افزونه ها منابع رو بالا میبره، یکبار تمام افزونه هارو غیرفعال کنید و بعد از 15-30 دقیقه، یک به یک افزونه هارو فعال کنید و چند دقیقه صبر کنید و منابع رو بررسی کنید ببینید آیا بصورت غیرمعمولا بالا میروند یا نه، هر افزونه های که بصورت غیرمعمول باعث افزایش منابع بشه رو میتونید پیدا کنید.

 

3. محدود کردن Heartbeat ، ذخیره خودکار، رونوشت پست، XML-RPC

Heartbeat، ذخیره خودکار، رونوشت پست، XML-RPC از دلایل پردازش CPU در پس زمینه هستند، Heartbeat وردپرس هر 15 تا 60 ثانیه اجرا میشود و ذخیره خودکار نوشته ها هر 60 ثانیه در حین ویرایش اجرا میشود. البته استفاده زیاد از افزونه ها را پیشنهاد نمیدهیم، ولی افزونه هایی به اسم Bloat remover میتوانند این تنظیمات غیرفعالسازی را انجام دهند.

محدود کردن Heartbeat

یا با استفاده از کد زیر میتوانید Heartbeat را محدود کنید. فقط کافی هست کد زیر را در فایل قالب وردپرستون که به اسم functions.php است و بعد از تگ  <?php  قرار بدید.

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

 

افزایش زمان ذخیره خودکار (autosave) وردپرس

با استفاده از کد زیر میتوانید این زمان را به 120 ثانیه افزایش دادم، شما میتوانید این عدد را بیشتر کنید، فقط باید کد زیر را به فایل wp-config.php اضافه کنید.

define('AUTOSAVE_INTERVAL', 300); // seconds

کاهش محدودیت رونوشت پست وردپرس

اگر نسخه پشتیبان کمتری میخواهید داشته باشید، کد زیر را میتوانید داخل فایل wp-config.php قرار بدید و تعدادش رو تعیین کنید.

define( ‘WP_POST_REVISIONS’, 10 );

 

غیرفعال کردن XML-RPC

اگر از موبایل برای انتشار محتوا استفاده نمی کنید (یا از افزونه هایی مانند JetPack استفاده می کنید)، XML-RPC را غیرفعال کنید. علاوه بر کاهش استفاده از CPU، حملات brute force + DDoS را نیز متوقف می کند.با استفاده از کد زیر امکان XML-RPC را غیرفعال کنید و کد زیر را در htaccess. قرار دهید، به جای allow from xxx.xxx.xxx.xxx هم میتوانید IP استاتیک خودتان را قرار دهید که فقط از طریق این IP امکان دسترسی به xml-rpc باشد.

 

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>

 

4. WP-Cron را با یک Cron Job واقعی جایگزین کنید

wp-cron در هر صفحه که باز میشود بارگذاری می شود و کارهای خودکار مانند انتشار پست های زمان بندی شده، بررسی بروز رسانی قالب ها و افزونه ها، ارسال ایمیل و غیره را زمان بندی می کند. جایگزین کردن آن با یک کار cron واقعی به شما کنترل بهتری می دهد و میتواند به کاهش مصرف CPU کمک کند. اولین قدم این است که کد wp-cron را توسط کد زیر به فایل wp-config.php خود اضافه کنید و آنرا غیرفعال کنید، سپس یک کرون جاب دیگر تعریف کنید.

define('DISABLE_WP_CRON', true);

حالا یک کرون جاب خارج از وردپرس راه اندازی می کنیم.  در سی پنل، تب cron jobs را باز می‌کنید و از خط زیر برای تنظیم یک کار cron برای هر 10 دقیقه استفاده کنید. ممکن است فکر کنید فاصله زمانی بالاتر برای CPU بهتر است، اما افزایش زمان بالاتر میتواند باعث افزایش ناگهانی CPU شود زیرا تعداد زیادی درخواست به طور همزمان اجرا می‌شوند.

wget -q -O - https://yourwebsite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

 

5. استفاده از CDN با تنظیمات Full Page Caching

CDN ها بار روی سرور شما را با توزیع پهنای باند به مراکز داده خودشون کاهش میدهند. از CDN کلودفلر برای اینکار میتوانید استفاده کنید.

 

6. استفاده از CDN برای فایروال + بهینه سازی تصویر

استفاده از CDN برای امنیت + بهینه سازی تصویر نیز بار روی سرور شما را کم می کند. در حالی که افزونه های امنیتی + بهینه سازی تصویر از منابع ram,cpu زیادی استفاده می کنند و استفاده از CPU را افزایش می دهند. فایروال درخواست های ناخواسته را مسدود می کند. Cloudflare (WAF)، QUIC.cloud، و BunnyCDN همگی فایروال دارند. Cloudflare به شما امکان می دهد قوانین فایروال را برای مسدود کردن ربات ها یا کشورهایی که بیشترین آلودگی بدافزاری و حملات را دارند مسدود کنید.

برای بهینه‌سازی تصویر، QUIC.cloud، Cloudflare Mirage/Polish  یا BunnyCDN’s Bunny Optimizer را توصیه می‌کنم. اینها همچنین معمولا تصاویر شما را بهتر از افزونه ها بهینه می کنند.

 

7. مسدود سازی ربات ها (Bot)

می توانید از گزارش ترافیک Wordfence برای مشاهده تمام ربات هایی که به سایت شما حمله میکنند استفاده کنید. اما توصیه می کنم پس از اتمام کار Wordfence را حذف کنید زیرا این افزونه می تواند استفاده از CPU را افزایش دهد. همچنین در CDN کلودفلر حالت Cloudflare’s bot fight mode را فعال کنید، یا با قابلیت crawler hints با کمک به موتورهای جستجو از خزیدن بیهوده، در منابع صرفه جویی میکند.

 

8. افزایش زمان منقضی شدن کش (Cache)

برخی از افزونه های کش و CDN ها دارای تنظیمات انقضای کش هستند. انقضای کش طولانی‌ تر چندین مزیت دارد، یکی از آنها استفاده کمتر از CPU است زیرا نیازی به ایجاد مکرر کش ندارد. گوگل توصیه می‌کند این مدت را برای فایل‌های استاتیک روی ۳۶۵ روز تنظیم کنید، اما وب‌سایت‌های پویا مانند WooCommerce معمولا باید حدود ۱ ماه را تنظیم کنند.

 

9. آدرس صفحه WP-Login را تغییر بدید

صفحه wp-login وردپرس یک هدف رایج برای حملات ربات ها است. تلاش برای ورود به داشبورد وردپرس، باعث ایجاد درخواست‌ های اضافی میشود، بنابراین بهتر است آدرس صفحه لاگین وردپرس را عوض کنید.

 

10. بهینه سازی پایگاه داده

تمیز کردن پایگاه داده میتواند استفاده از CPU را کاهش دهد. افزونه‌ های کش بهینه سازی هایی انجام میدهند، اما WP-Optimize به شما امکان میدهد جداول باقی مانده از افزونه‌ های قدیمی را حذف کنید. در فرآیند انجام این کار، میتوانید افزونه‌هایی را نیز مشاهده کنید که سربار overhead هستند. و اگر به آنها نیاز ندارید میتوانید غیرفعال کنید.

 

11. کش Redis یا Memcached را با OPcache نصب کنید

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

Memcached یک سیستم ذخیره سازی حافظه توزیع شده همه منظوره است و برای سرعت بخشیدن به وب سایت های مبتنی بر database-driven از طریق کش کردن داده ها و objects در RAM استفاده می شود تا تعداد دفعاتی که یک منبع داده خارجی باید خوانده شود کاهش یابد.

 

12. از صفحه سازهایی با ram و cpu بالا استفاده کنید

چرا المنتور حداقل memory limit 756 مگابایتی را توصیه می کند؟ زیرا به منابع بیشتری نسبت به گوتنبرگ و سایر اجزا نیاز دارد. صفحه ساز ها به منابع سرور بیشتری نیاز دارند تا بتوانند سریعتر و روانتر اجرا شوند.

 

13. مقدار PHP Memory Limit را افزایش دهید

گاهی اوقات افزایش حافظه ram سایت وردپرسی شما می تواند به رفع خطاهای بالای CPU در وردپرس کمک کند. توصیه می کنیم حافظه PHP خود را به حداقل 512 مگابایت افزایش دهید.

 

14. استفاده از PHP 8+

اگر از نسخه های قدیمی PHP استفاده میکنید، به آخرین نسخه PHP ارتقا بدید، ( اگر خطایی در اجرای سایت دریافت کردید، دوباره به نسخه PHP قبل برگردید، شاید افزونه ها یا قابل شما با نسخه جدید هماهنگ نیست). نسخه های بالاتر PHP در قسمت frontend سریعتر و برای استفاده از CPU و حافظه بهینه تر هستند.

 

15. اسکن کردن با ضد بدافزار ها (anti malware)

با استفاده از Wordfence یا یک افزونه امنیتی دیگر، سایت وردپرس خودتون رو برای بررسی بدافزار ها و سایر آسیب پذیری های اسکن کنید. رفع مشکلات دیگر می تواند امنیت را بهبود بخشد و همچنین ممکن است به کاهش استفاده از CPU کمک کند.

 

16. استفاده نکردن از قابل های باگ دار وردپرس

یک قالب وردپرس که کدنویس اون بهینه نیست و بعضی ویژگی هایی مانند تغییر سایز تصاویر دارد که در سمت سرور اجرا میشود، می تواند CPU فشرده باشد. سعی کنید از قالب های ساده تر و با کدنویسی و کوئری های ساده استفاده کنید. بعضی قالب های وردپرس بدلیل بهینه نبودن از لحاظ کدنویسی در query گرفتن و فراخونی اطلاعات از دیتابیس و یا استفاده حلقه های زیاد ، حلقه های نادرست loop و … باعث بالارفتن مصرف منابع میشن. برای بررسی این مورد ، یکی از قالب های پیش فرض وردپرس رو انتخاب و فعال کنید و حدود 15 تا 30 دقیقه بعد مصرف منابع رو بررسی کنید.اگر در فایل error-log موجود در هاست، خطاهایی از قالب سایت داشتید ، پیشنهاد میکنم قالب رو عوض کنید و یک قالب دیگه انتخاب کنید.

 

 

 

سایر آموزش ها :

آموزش استفاده از سایت GTmetrix

 

<