بعد اختيار قالب "phpfcgid" لخدمة الويب VestaCP ، استنفد عدد كبير من عمليات PHP-CGI الذاكرة بسرعة.
- لقد نفدت الذاكرة بشكل أساسي لبضع ساعات بعد إعادة تشغيل الخادم.
- لم يتم إنهاء عملية PHP-CGI الخاملة سابقًا ، وتقوم عملية واحدة بتشغيل ما يقرب من 1 عملية فرعية ، وتستهلك ما لا يقل عن 20 ميغا بايت من الذاكرة.
تستخدم في SSH htop الأمر (التثبيت مطلوب) ، يمكنك عرض هذه الحالة ▼

إذا تلقيت رسالة خطأ "-bash: htop: الأمر غير موجود" عند استخدام الأمر htop ، يرجى الاطلاع على هذا البرنامج التعليمي الخاص بالحل ▼
تسبب العدد الكبير من عمليات PHP-CGI في استنفاد الذاكرة بسرعة. تكمن المشكلة في أن VestaCP يستخدم إعدادات غير مُحسَّنة في قالب phpfcgid الخاص بنظام CentOS .
- VestaCP في قالب phpfcgid ، قم بتعيين عملية PHP-CGI واحدة لتشغيل ما يصل إلى 1 عملية فرعية.
طلب /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh السطر 13 من الملف:
export PHP_FCGI_CHILDREN=20
ومع ذلك ، فإن مثل هذا الإعداد ينتهك تحذير Apache في وثائق إدارة العمليات الفرعية لـ PHP:
يجب تعطيل إدارة العمليات الفرعية في PHP ( PHP_FCGI_CHILDREN ) دائمًا باستخدام mod_fcgid، حيث يقوم هذا النظام بتوجيه طلب واحد فقط في كل مرة إلى عمليات التطبيق التي أنشأها؛ وبالتالي، لن يتم استخدام أي عمليات فرعية أنشأها PHP بشكل فعال. (بالإضافة إلى ذلك، قد لا يتم إنهاء العمليات الفرعية في PHP بشكل صحيح). بشكل افتراضي، ومع ضبط متغير البيئة PHP_FCGI_CHILDREN=0 ، تكون إدارة العمليات الفرعية في PHP معطلة.
نظرًا لأنه في الوحدة النمطية mod_fcgid الخاصة بـ Apache ، يمكن لعملية PHP-CGI الاستجابة لطلب واحد فقط وتشغيلها في كل مرة ، فإن عملية PHP-CGI الفرعية غير فعالة للغاية.
لذلك ، يجب تعطيل إعدادات إدارة العمليات الفرعية لـ PHP مباشرة ▼
PHP_FCGI_CHILDREN=0
في الوقت نفسه ، إذا كان لديك بالفعل مضيف افتراضي تم إنشاؤه ، فستحتاج إلى تعديل ملفات التكوين لجميع مواقع الويب ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
بعد فتح ملف التكوين fcgi-starter ، أدخل التالي ▼
export PHP_FCGI_CHILDREN=20
تعديل إلى ▼
export PHP_FCGI_CHILDREN=0
- بعد التعديل ، سيتم إيقاف تشغيل إدارة العمليات الفرعية لـ PHP في وضع mod_fcgid.
- لن تؤدي عملية PHP-CGI بعد الآن إلى إنتاج عمليات فرعية ، والتي يمكن أن توفر الكثير من الذاكرة.
أيضًا ، لا يقوم VestaCP بتعيين آلية إنهاء للعمليات الخاملة:
- ستستمر جميع عمليات PHP-CGI المنفذة حديثًا في استخدام الذاكرة حتى يتم إعادة تشغيل النظام.
لإصلاح ذلك ، ما عليك سوى إضافة ملف التكوين mod_fcgid /etc/httpd/conf.d/fcgid.conf أضف الإعدادات التالية في ▼
FcgidIdleTimeout 120
- اضبط Apache ليقتل تلقائيًا عمليات PHP-CGI التي تكون خاملة لمدة دقيقتين (2 ثانية).
بعد اكتمال الإعداد ، أعد تشغيل خدمة Apache ▼
service httpd restart
بعد إعادة تشغيل الخدمة ، لن يتم عرض مئات عمليات PHP-CGI التي تم عرضها مسبقًا في HTOP.
عادةً، تستهلك عملية PHP-CGI واحدة لمستخدم Vesta CP واحد من 30 إلى 40 ميجابايت من الذاكرة، وهو ما يكفي أكثر من اللازم لمضيف Linux.
لذلك، بالنسبة للمسوقين عبر الإنترنت الذين يرغبون في تحقيق نتائج جيدة في تحسين محركات البحث ، فإن تحسين تكوين محتوى وقوالب Vesta أمر في غاية الأهمية.
يمكنك إلقاء نظرة على البرامج التعليمية التالية على لوحة VestaCP ▼
نأمل أن تكون المقالة "تحسين تكوين قالب VestaCP phpfcgid لـ 'عمليات متعددة، خطأ استنفاد الذاكرة 500'" التي تمت مشاركتها على مدونة Chen Weiliang ( https://www.chenweiliang.com/ ) مفيدة لك.
لا تتردد في مشاركة رابط هذه المقالة: https://www.chenweiliang.com/cwl-735.html



