تستهلك عملية HestiaCP php-fpm قدرًا كبيرًا من موارد وحدة المعالجة المركزية. كيف يمكنني تحسينها؟

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

تستهلك عملية HestiaCP 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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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 هو 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 لديك وحافظ على خادمك! 🚀

نأمل أن تكون المقالة "عملية HestiaCP php-fpm تستهلك الكثير من موارد وحدة المعالجة المركزية، كيف يمكن تحسينها؟" المنشورة على مدونة Chen Weiliang ( https://www.chenweiliang.com/ ) مفيدة لك.

لا تتردد في مشاركة رابط هذه المقالة: https://www.chenweiliang.com/cwl-32490.html

لاكتشاف المزيد من الحيل المخفية🔑، مرحبًا بك في الانضمام إلى قناتنا على Telegram!

مشاركة ومثل إذا كنت ترغب في ذلك! مشاركاتك وإعجاباتك هي حافزنا المستمر!

 

发表 评论

لا يوجد أي مشكلة في هذا الأمر.

انتقل إلى الأعلى