ควรเปิดกี่กระบวนการ

การตั้งค่าจำนวนกระบวนการ

จำนวนกระบวนการจะถูกกำหนดโดยคุณสมบัติ count (ระบบปฏิบัติการ Windows ไม่รองรับการตั้งค่าจำนวนกระบวนการ) ตัวอย่างเช่นโค้ดต่อไปนี้

use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$http_worker = new Worker("http://0.0.0.0:2345");

// ## เริ่มต้นให้บริการด้านนอกด้วยกระบวนการ 4 ตัว ##
$http_worker->count = 4;

การตั้งค่าจำนวนกระบวนการต้องพิจารณาเงื่อนไขต่อไปนี้

  1. จำนวนคอร์ CPU
  2. ขนาดหน่วยความจำ
  3. การวิพากษ์ธุรกิจที่เป็นตัวความยุ่งเหยิง

หลักการการตั้งค่าจำนวนกระบวนการ

  1. จำนวนความจุหน่วยความจำของแต่ละกระบวนการควรน้อยกว่าความจุหน่วยความจำทั้งหมด (โดยทั่วไปแล้วความจุหน่วยความจำของแต่ละกระบวนการประมาณ 40M)
  2. หากเป็นชนิดที่เป็นตัวแรงงานในด้าน I/O ซึ่งหมายถึงการทำงานที่มีการบล็อกเช่นการเข้าถึง MySQL และ Redis การตั้งค่าจำนวนกระบวนการสามารถเพิ่มขึ้นได้ เช่น เซ็ทเป็น 3 เท่าของจำนวนคอร์ CPU หรือถ้ามีการรอที่เกี่ยวข้องมากมายสามารถเพิ่มจำนวนกระบวนการเพิ่มขึ้นได้อีก เช่น 8 เท่าของจำนวนคอร์ CPU หรือแม้กระทั่งมากกว่านั้น ควรระวังว่า I/O ที่ไม่เป็นบล็อกเป็นอย่างไร
  3. หากเป็นชนิดที่เป็นตัวแรงงานในด้าน CPU ซึ่งหมายถึงการทำงานที่ไม่ได้ปลดล็อคที่อยู่ภารกิจ เช่นการใช้งาน I/O แบบไม่ต้องรอเพื่ออ่านทรัพยากรเครือข่ายจำนวนกระบวนการสามารถตั้งค่าให้เท่ากับจำนวนคอร์ CPU

ค่าการตั้งค่าจำนวนกระบวนการแบบอ้างอิง

หากโค้ดธุรกิจเป็นชนิดที่เป็นตัวแรงงานในด้าน I/O ให้ตั้งค่าจำนวนกระบวนการตามระดับของ I/O โดยการตั้งค่าจำนวนกระบวนการเท่ากับ 3 - 8 เท่าของจำนวนคอร์ CPU

หากโค้ดธุรกิจเป็นชนิดที่เป็นตัวแรงงานในด้าน CPU การตั้งค่าจำนวนกระบวนการสามารถตั้งค่าเท่ากับจำนวนคอร์ CPU

คำแนะนำ

การทำงานของ Workerman I/O ในตัวเองเป็นแบบไม่ใช่การบล็อก เช่น Connection->send ซึ่งเป็นการทำงานที่ไม่ใช้การบล็อก ซึ่งเป็นการทำงานที่เป็นแบบระบบปฏิบัติการโปรดทราบว่าธุรกิจของตัวเองเป็นชนิดใด สามารถตั้งค่าจำนวนกระบวนการได้เทียบเท่ากับ 3 เท่าของจำนวนคอร์ CPU หรือมากกว่านั้น พูดได้เลยการต้องจำนองเพิ่มจำนวนกระบวนการไม่ได้ทำให้ผลการใช้งานดีขึ้น ทำให้ค่าใช้สอดคลาขึ้น มีผลกระทบต่อประสิทธิภาพบางอย่าง