دليل المادة
هيستياCP ارتفاع في مستوى وحدة المعالجة المركزية في الخادم؟ دليل كامل لتحسين عملية PHP-FPM!

هل وحدة المعالجة المركزية للخادم دائمًا عند 100%؟ المروحة تدور بعنف؟ هل سرعة فتح الموقع أصبحت بطيئة؟ربما يكون السبب هو php-fpm!
لقد اكتشفت مؤخرا chenweiliang.com هذا المجمع PHP php-fpm لقد استهلكت هذه العملية وحدة المعالجة المركزية بشكل جنوني، وتعطل الخادم!
من أجل إنعاش الخادم، قمت بتجربة سلسلة من طرق التحسين ونجحت في النهاية في تقليل استخدام وحدة المعالجة المركزية.
الآن دعونا نشارك هذا دليل التحسين الفعال! 🚀
1. الحد من عدد عمليات php-fpm
قد تكون إعدادات php-fpm الافتراضية无限يتم إنشاء العملية بشكل لا يمكن التحكم فيه، مما يتسبب في زيادة تحميل وحدة المعالجة المركزية للخادم.
لتحسين ذلك، يمكننا تعديل معلمات إدارة العملية.
打开 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
✅ تأثير:قم بالحد من عدد العمليات لمنع 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، وتقليل العبء على وحدة المعالجة المركزية، وتحسين كفاءة التنفيذ.
3. حدد الحد الأقصى لوقت تنفيذ نصوص PHP
إذا تم تشغيل البرنامج النصي PHP لفترة طويلة جدًا، فسيتم احتلال موارد وحدة المعالجة المركزية بشكل مستمر.
إن تحديد فترة زمنية معقولة للتوقف قد يمنع العمليات "العنيدة" من احتلال الخادم لفترة طويلة.
打开 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 من التشغيل لفترة طويلة وتقليل هدر موارد وحدة المعالجة المركزية.
4. تحقق MySQL استعلام بطيء
PHP-FPM لديه حمولة عالية،ربما يكون السبب هو استعلام SQL البطيء!
开启 MySQL سجل الاستعلام البطيء، اكتشف عبارات 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
عند النظر إلى قائمة العمليات، وجدت استخدام وحدة المعالجة المركزية لعملية Memcached هو 24.8%!
قد يكون سبب ذلك هو أن تخصيص ذاكرة التخزين المؤقت كبير جدًا، مما يتسبب في قيام وحدة المعالجة المركزية بمعالجة كمية كبيرة من البيانات.
调整 memcached إعدادات:
sudo nano /etc/memcached.conf
المثال:
-m 32 # 限制 Memcached 内存使用 32MB
ثم أعد التشغيل:
sudo systemctl restart memcached
✅ تأثير:تقليل عبء وحدة المعالجة المركزية لعملية 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 للملفات الثابتة وتقليل استخدام وحدة المعالجة المركزية.
7. ابحث عن البرنامج النصي PHP الذي يستخدم أكبر قدر من وحدة المعالجة المركزية
إذا ظلت وحدة المعالجة المركزية مرتفعة للغاية بعد التحسين، فقد يكون السبب هو تشغيل بعض نصوص PHP بشكل عشوائي.
استخدم الأمر التالي لمعرفة عملية PHP ذات أعلى استخدام لوحدة المعالجة المركزية:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
إذا وجدت أن البرنامج النصي PHP يستهلك قدرًا كبيرًا من وحدة المعالجة المركزية، فيمكنك إيقافه مباشرةً:
kill -9 PID
✅ تأثير:تحديد "التفاح الفاسد" بدقة ومنع عملية PHP من احتلال وحدة المعالجة المركزية لفترة طويلة.
ملخص: 7 طرق لتحسين PHP-FPM
✅ تحديد عدد عمليات PHP-FPMلمنع التحميل الزائد لوحدة المعالجة المركزية
✅ تمكين OPCache، تقليل التحليل المتكرر لكود PHP
✅ ضبط مهلة PHPلمنع التشغيل على المدى الطويل
✅ التحقق من استعلامات MySQL البطيئةتحسين أداء استعلامات قاعدة البيانات
✅ ضبط ذاكرة Memcached, تقليل العبء على وحدة المعالجة المركزية
✅ تمكين ذاكرة التخزين المؤقت الثابتة لـ Nginx، تقليل عبء تحليل PHP
✅ البحث عن نصوص PHP ذات الاستخدام العالي لوحدة المعالجة المركزية, التحسين الدقيق
استنتاج
تحسين الخادم يشبه اللياقة البدنية، فأنت بحاجة إلى إجراء تعديلات دقيقة وعدم العبث!
بعد سلسلة من التحسينات، انخفض حمل وحدة المعالجة المركزية لخادمي من 80% إلى 15%, يتم فتح الموقع أسرع مرتين!
إذا كان الخادم الخاص بك يعاني من مشاكل مماثلة، فجرب هذه الطرق! 💪
👉 إتخذ إجراء الآن! قم بتحسين PHP-FPM الخاص بك وحفظ الخادم الخاص بك! 🚀
مدونة Hope Chen Weiliang ( https://www.chenweiliang.com/ ) تمت مشاركة "تستهلك عملية HestiaCP php-fpm الكثير من موارد وحدة المعالجة المركزية، فكيف يمكن تحسينها؟ "قد يكون مفيدًا لك."
مرحبا بكم في مشاركة رابط هذه المقالة:https://www.chenweiliang.com/cwl-32490.html
