عند تثبيت PHP، يمكن لأولئك الذين يتوخون الحذر أن يجدوا أننا قمنا أيضًا بتثبيت وحدة php-fpm. وحدة fpm هي المسؤولة عن معالجة عملية الطلب. ستؤثر العمليات ذات الصلة لـ fpm بشكل مباشر على عدد الطلبات التي يمكن للخادم الاستجابة لها وستعمل الإعدادات المناسبة على تحسين كفاءة المعالجة بشكل فعال، وإلا سيحدث خطأ 502 أو انتهاء مهلة البوابة.
لنفتح ملف www.conf ضمن /etc/php/7.2/fpm/pool.d ونبحث عن المعلمات التالية:
pm=dynamicpm.max_children=5pm.start_servers=2pm.min_spare_servers=1pm.max_spare_servers=3;pm.max_requests=500
هذه هي المعلمات الافتراضية بعد أن قام المؤلف بتثبيت PHP وسأشرحها واحدة تلو الأخرى أدناه:
تشير الديناميكية الأولى إلى أن وضع معالجة العملية ديناميكي، وأن هناك أيضًا وضعًا ثابتًا يتوافق معها.
إذا تم ضبط PM على الوضع الثابت، فلن يتم تفعيل سوى المعلمةpm.max_childern.
إذا تم ضبط PM على الوضع الديناميكي، فسيتم تفعيل المعلمات الأربع التالية. سيبدأ النظام عملياتpm.start_servers php-fpm عندما يبدأ تشغيل php-fpm، ثم يقوم ديناميكيًا بضبط عدد عمليات php-fpm بينpm.min_spare_servers وpm.max_spare_servers وفقًا لاحتياجات النظام.
تشير المعلمة الثانيةpm.max_children إلى الحد الأقصى لعدد العمليات التي يمكن تفرعها (بدءها). ومن الواضح أنه كلما زاد العدد، زاد عدد الطلبات التي يمكن تقديمها في نفس الوقت. وبطبيعة الحال، لن تكون هناك اتصالات بطيئة أو أوقات انتظار الطلب طويلة، ولكن وحدة المعالجة المركزية أو الذاكرة ستظل متاحة، كما أن الإشغال ليس مرتفعًا. تشير هذه القيمة إلى عدد عمليات php-fpm المفتوحة في الوضع الثابت، وتحدد الحد الأقصى لعدد عمليات php-fpm في الوضع الديناميكي.
تشير المعلمة الثالثةpm.start_servers إلى أنه إذا كان الوضع الديناميكي، فسيتم بدء العديد من العمليات في الحالة الأولية، ثم يتم تعديلها ديناميكيًا حسب الحاجة، ويتم تحديدها بواسطة المعلمتينpm.min_spare_servers وpm.max_spare_servers.
تمثل المعلمة الرابعةpm.min_spare_servers الحد الأدنى لعدد عمليات php-fpm في حالة الخمول في الوضع الديناميكي، والعدد الذي يتم الاحتفاظ به بعد تنظيف العمليات الخاملة
تمثل المعلمة الخامسةpm.max_spare_servers الحد الأقصى لعدد عمليات php-fpm في حالة الخمول في الوضع الديناميكي، أي أنه عندما تصل العمليات الخاملة إلى هذه القيمة، يتم تنظيفها.
تشير المعلمة السادسة مساءً.max_requests إلى عدد الطلبات قبل تدمير العملية وإعادة تشغيلها، مما قد يؤدي إلى تجنب تسرب الذاكرة.
من الواضح أن max_children هنا هو 5، وهو ما يكفي في البداية، ومع زيادة حركة المرور، لن يكون ذلك كافيًا بالتأكيد. التأثير الأكثر مباشرة هو قيمةpm.max_children : إذا كانت الذاكرة وموارد نظام وحدة المعالجة المركزية تسمح بذلك، كلما كان ذلك أفضل، إليك طريقة حسابية، على سبيل المثال، تبلغ عملية fpm حوالي 15 ~ 25 ميجا بايت 150~300 عند الاستخدام الكامل، ثم راقب حالة الخادم وقم بإجراء التعديلات
بشكل عام، يمكن لخوادم الذاكرة الكبيرة (مثل 32 و64 جيجا وما فوق) أن تأخذ في الاعتبار الوضع الثابت، الذي له تأثيرات تزامن جيدة. يمكن لخوادم الذاكرة الصغيرة أن تأخذ في الاعتبار الوضع الديناميكي، والذي يمكن التحكم فيه تلقائيًا عند الطلب.
يمكنك اختبار الضغط وفقًا لحالتك وإجراء التعديلات وفقًا لظروف الخادم الخاص بك.