كم عدد العمليات التي يجب أن يتم تفعيلها
كيفية ضبط عدد العمليات
يتم تحديد عدد العمليات بواسطة خاصية count (نظام الويندوز لا يدعم ضبط عدد العمليات)، على سبيل المثال، الكود أدناه
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:2345");
// ## بدء 4 عمليات لتقديم الخدمة ##
$http_worker->count = 4;
...
يجب أخذ الاعتبار في ضبط عدد العمليات الشروط التالية
-
عدد أنوية وحدة المعالجة المركزية
-
حجم الذاكرة
-
ما إذا كانت الأعمال تميل إلى كونها مكثفة الإدخال/الإخراج أو مكثفة وحدة المعالجة المركزية
مبادئ ضبط عدد العمليات
-
مجموع استهلاك الذاكرة لكل عملية يجب أن يكون أقل من إجمالي الذاكرة (بشكل عام، تستهلك كل عملية أعمال حوالي 40 ميغا بايت).
-
إذا كانت الأعمال مكثفة إدخال/إخراج، أي أن هناك بعض العمليات المُعطلة للإدخال/الإخراج، مثل الوصول العادي إلى Mysql أو Redis، فإن عدد العمليات يمكن أن يكون أكبر، مثل ضبطه لثلاثة أضعاف عدد أنوية وحدة المعالجة المركزية. إذا كان هناك الكثير من الانتظارات المعطلة في الأعمال، يمكن زيادة عدد العمليات بشكل أكبر، مثل 8 أضعاف أنوية وحدة المعالجة المركزية أو حتى أكثر. لاحظ أن الإدخال/الإخراج غير المعطل يُصنف كمكثف لوحدة المعالجة المركزية، وليس مكثفاً للإدخال/الإخراج.
-
إذا كانت الأعمال مكثفة لوحدة المعالجة المركزية، أي أنه لا توجد تكاليف للإدخال/الإخراج المُعطل، مثل استخدام الإدخال/الإخراج غير المتزامن لقراءة مصادر الشبكة، فيمكن ضبط عدد العمليات ليكون مساوياً لعدد أنوية وحدة المعالجة المركزية.
قيم مرجعية لضبط عدد العمليات
إذا كانت الشيفرة الخاصة بالأعمال تميل إلى كونها مكثفة إدخال/إخراج، فيجب ضبط عدد العمليات بناءً على مستوى كثافة الإدخال/الإخراج، مثل من 3 إلى 8 أضعاف عدد أنوية وحدة المعالجة المركزية.
إذا كانت الشيفرة الخاصة بالأعمال تميل إلى كونها مكثفة لوحدة المعالجة المركزية، فيمكن ضبط عدد العمليات ليكون مساوياً لعدد أنوية وحدة المعالجة المركزية.
ملاحظة
تكون عمليات الإدخال/الإخراج الخاصة بـ Workerman غير معطلة، مثل Connection->send وغيرها من العمليات غير المعطلة، وتعتبر عمليات مكثفة لوحدة المعالجة المركزية. إذا كنت غير متأكد من نوع تكاليف الأعمال لديك، يمكنك ضبط عدد العمليات ليكون حوالي ثلاثة أضعاف عدد أنوية وحدة المعالجة المركزية.
أيضاً، ليس من الجيد أن يكون عدد العمليات كبيراً جداً، حيث إذا كان هناك عدد كبير جداً من العمليات، ستزداد تكاليف تبديل العمليات، مما يؤثر على الأداء.