فهرست مقاله
- 1 1. تعداد فرآیندهای php-fpm را محدود کنید
- 2 2. OPCache را فعال کنید (برای بهبود عملکرد PHP)
- 3 3. حداکثر زمان اجرای اسکریپت های PHP را محدود کنید
- 4 4. پرس و جوهای کند MySQL را بررسی کنید
- 5 5. استفاده از منابع Memcached را محدود کنید
- 6 6. Nginx را فعال کنید تا منابع استاتیک را کش کند
- 7 7. اسکریپت PHP را پیدا کنید که بیشترین استفاده از CPU را دارد
- 8 خلاصه: 7 روش برای بهینه سازی PHP-FPM
- 9 در نتیجه
HestiaCP افزایش سی پی یو سرور؟ راهنمای کامل بهینه سازی فرآیند PHP-FPM!

آیا 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 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_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
