فرآیند HestiaCP php-fpm منابع زیادی از CPU را اشغال می کند چگونه می توانم آن را بهینه کنم؟

HestiaCP افزایش سی پی یو سرور؟ راهنمای کامل بهینه سازی فرآیند PHP-FPM!

فرآیند HestiaCP php-fpm منابع زیادی از CPU را اشغال می کند چگونه می توانم آن را بهینه کنم؟

آیا CPU سرور همیشه 100% است؟ فن به طرز وحشیانه ای می چرخد؟ آیا سرعت باز شدن وب سایت کاهش می یابد؟ممکن است مقصر php-fpm باشد!

من اخیرا کشف کردم chenweiliang.com این استخر PHP php-fpm این فرآیند به شدت CPU را مصرف کرد و سرور از کار افتاد!

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

حالا بیایید این را به اشتراک بگذاریم راهنمای بهینه سازی کارآمد! 🚀

1. تعداد فرآیندهای php-fpm را محدود کنید

تنظیمات پیش فرض php-fpm ممکن استنامحدوداین فرآیند به‌طور غیرقابل کنترلی ایجاد می‌شود و باعث بارگیری بیش از حد CPU سرور می‌شود.

برای بهینه‌سازی آن، می‌توانیم پارامترهای مدیریت فرآیند را تغییر دهیم.

روشن کن php-fpm فایل های پیکربندی:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *نسخه PHP خود را مانند PHP8.3 تغییر دهید و آن را به این صورت تغییر دهید:/etc/php/8.3/fpm/pool.d/www.conf

نسخه PHP تنظیم شده توسط HestiaCP را پرس و جو کنید

v-list-web-domain user domain.com

به عنوان مثال:

v-list-web-domain abc chenweiliang.com

در خروجی چیزی شبیه به:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

این بدان معنی است که وب سایت استفاده می کند PHP 8.3.

پارامترهای زیر را بیابید و تغییر دهید:

pm = dynamic
pm.max_children = 16  ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4   ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2  ; 最小空闲进程数
pm.max_spare_servers = 7  ; 最大空闲进程数
pm.max_requests = 3000    ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s  ; 空闲进程 10s 后自动退出

سپس راه اندازی مجدد کنید php-fpm برای تاثیرگذاری:

sudo systemctl restart php-fpm

اثر: تعداد پردازش ها را محدود کنید تا از مصرف بیش از حد منابع CPU در php-fpm جلوگیری کنید.

2. OPCache را فعال کنید (برای بهبود عملکرد PHP)

PHP هر بار که کد را اجرا می کند، دوباره آن را اصلاح می کند، که باعث اتلاف منابع می شود.
راه حل؟ OPCache را فعال کنید و کد PHP خود را کش کنید!

ترجمه php.ini سند:

sudo nano /etc/php/*/fpm/php.ini

موارد زیر را اضافه یا اصلاح کنید:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0  # 禁用实时检测,提高性能

پس از ذخیره، فرآیند PHP را مجدداً راه اندازی کنید:

sudo systemctl restart php8.3-fpm

اثر: کاهش تجزیه مکرر کد PHP، کاهش بار CPU و بهبود کارایی اجرا.

3. حداکثر زمان اجرای اسکریپت های PHP را محدود کنید

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

روشن کن php.ini سند:

sudo nano /etc/php/*/fpm/php.ini

پارامترهای زیر را تغییر دهید:

max_execution_time = 30  # PHP 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

سپس فرآیند PHP را مجدداً راه اندازی کنید:

sudo systemctl restart php-fpm

اثر: جلوگیری از اجرای طولانی مدت فرآیندهای PHP و کاهش اتلاف منابع CPU.

4. بررسی کنید خروجی پرس و جو کند

PHP-FPM بار بالایی دارد،ممکن است ناشی از پرس و جو کند SQL باشد!
开启 خروجی ثبت پرس و جو کند، عبارات SQL را که مانع می شوند پیدا کنید.

فایل پیکربندی MySQL را ویرایش کنید:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

添加:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1  # 超过 1 秒的查询会被记录

پس از ذخیره، MySQL را مجددا راه اندازی کنید:

sudo systemctl restart mysql

سپس استفاده کنید mysqldumpslow پرس و جوهای کند را تجزیه و تحلیل کنید:

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

اثر: جستجوهای وقت گیر SQL را پیدا کنید، عملکرد پایگاه داده را بهینه کنید و به طور غیرمستقیم بار PHP را کاهش دهید.

5. استفاده از منابع Memcached را محدود کنید

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

调整 memcached پیکربندی:

sudo nano /etc/memcached.conf

تجدید نظر:

-m 32  # 限制 Memcached 内存使用 32MB

سپس راه اندازی مجدد:

sudo systemctl restart memcached

اثر: کاهش بار CPU فرآیند Memcached و بهبود کارایی کش.

6. Nginx را فعال کنید تا منابع استاتیک را کش کند

بسیاری از اوقات، PHP درخواست هایی را پردازش می کند که حاوی تعداد زیادی درخواست هستند CSS، JS، تصاویر، اما این فایل ها اصلا نیازی به تجزیه PHP ندارند!
راه حل؟ از Nginx برای کش کردن منابع استاتیک استفاده کنید!

ویرایش پیکربندی Nginx:

sudo nano /etc/nginx/nginx.conf

添加:

location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
    expires max;
    log_not_found off;
}

پس از ذخیره، Nginx را مجددا راه اندازی کنید:

sudo systemctl restart nginx

اثر: تعداد دفعاتی که PHP فایل های استاتیک را پردازش می کند را کاهش دهید و استفاده از CPU را کاهش دهید.

7. اسکریپت PHP را پیدا کنید که بیشترین استفاده از CPU را دارد

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

ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php

اگر متوجه شدید که یک اسکریپت PHP بیش از حد CPU اشغال می کند، می توانید مستقیماً آن را بکشید:

kill -9 PID

اثر:سیب های بد را به دقت شناسایی کنید و از اشغال طولانی مدت فرآیند PHP در CPU جلوگیری کنید.

خلاصه: 7 روش برای بهینه سازی PHP-FPM

تعداد فرآیندهای PHP-FPM را محدود کنید، برای جلوگیری از اضافه بار CPU
OPCache را فعال کنید، تجزیه مکرر کد PHP را کاهش دهید
تنظیم زمان PHP، برای جلوگیری از عملیات طولانی مدت
بررسی پرس و جوهای کند MySQL، عملکرد پرس و جو پایگاه داده را بهینه کنید
حافظه Memcached را تنظیم کنید، کاهش بار CPU
کش استاتیک Nginx را فعال کنید، کاهش بار تجزیه PHP
اسکریپت های PHP با مصرف بالای CPU را پیدا کنید، بهینه سازی دقیق

در نتیجه

بهینه سازی سرور مانند تناسب اندام است، شما باید تنظیمات دقیقی انجام دهید و به هم نخورید!
پس از یک سری بهینه سازی، بار CPU سرور من کاهش یافته است 80% کاهش به 15%، وب سایت دو برابر سریعتر باز می شود!
اگر سرور شما مشکلات مشابهی دارد، این روش ها را امتحان کنید! 💪

؟؟؟؟ اکنون اقدام کنید! PHP-FPM خود را بهینه کنید و سرور خود را ذخیره کنید! 🚀

وبلاگ امید چن ویلیانگ ( https://www.chenweiliang.com/ ) shared "فرآیند php-fpm HestiaCP منابع CPU زیادی را اشغال می کند، چگونه آن را بهینه کنیم؟ "، ممکن است برای شما مفید باشد.

به اشتراک گذاری لینک این مقاله خوش آمدید:https://www.chenweiliang.com/cwl-32490.html

برای کشف ترفندهای مخفی بیشتر🔑، به کانال تلگرام ما بپیوندید!

اگر دوست داشتید به اشتراک بگذارید و لایک کنید! اشتراک گذاری ها و لایک های شما انگیزه ادامه دار ماست!

 

发表 评论

آدرس ایمیل شما منتشر نخواهد شد. از زمینه های مورد نیاز استفاده می شود * 标注

رفته به بالا