ควรเปิดกี่กระบวนการ
การตั้งค่าจำนวนกระบวนการ
จำนวนกระบวนการจะถูกกำหนดโดยคุณสมบัติ 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;
การตั้งค่าจำนวนกระบวนการต้องพิจารณาเงื่อนไขต่อไปนี้
- จำนวนคอร์ CPU
- ขนาดหน่วยความจำ
- การวิพากษ์ธุรกิจที่เป็นตัวความยุ่งเหยิง
หลักการการตั้งค่าจำนวนกระบวนการ
- จำนวนความจุหน่วยความจำของแต่ละกระบวนการควรน้อยกว่าความจุหน่วยความจำทั้งหมด (โดยทั่วไปแล้วความจุหน่วยความจำของแต่ละกระบวนการประมาณ 40M)
- หากเป็นชนิดที่เป็นตัวแรงงานในด้าน I/O ซึ่งหมายถึงการทำงานที่มีการบล็อกเช่นการเข้าถึง MySQL และ Redis การตั้งค่าจำนวนกระบวนการสามารถเพิ่มขึ้นได้ เช่น เซ็ทเป็น 3 เท่าของจำนวนคอร์ CPU หรือถ้ามีการรอที่เกี่ยวข้องมากมายสามารถเพิ่มจำนวนกระบวนการเพิ่มขึ้นได้อีก เช่น 8 เท่าของจำนวนคอร์ CPU หรือแม้กระทั่งมากกว่านั้น ควรระวังว่า I/O ที่ไม่เป็นบล็อกเป็นอย่างไร
- หากเป็นชนิดที่เป็นตัวแรงงานในด้าน CPU ซึ่งหมายถึงการทำงานที่ไม่ได้ปลดล็อคที่อยู่ภารกิจ เช่นการใช้งาน I/O แบบไม่ต้องรอเพื่ออ่านทรัพยากรเครือข่ายจำนวนกระบวนการสามารถตั้งค่าให้เท่ากับจำนวนคอร์ CPU
ค่าการตั้งค่าจำนวนกระบวนการแบบอ้างอิง
หากโค้ดธุรกิจเป็นชนิดที่เป็นตัวแรงงานในด้าน I/O ให้ตั้งค่าจำนวนกระบวนการตามระดับของ I/O โดยการตั้งค่าจำนวนกระบวนการเท่ากับ 3 - 8 เท่าของจำนวนคอร์ CPU
หากโค้ดธุรกิจเป็นชนิดที่เป็นตัวแรงงานในด้าน CPU การตั้งค่าจำนวนกระบวนการสามารถตั้งค่าเท่ากับจำนวนคอร์ CPU
คำแนะนำ
การทำงานของ Workerman I/O ในตัวเองเป็นแบบไม่ใช่การบล็อก เช่น Connection->send
ซึ่งเป็นการทำงานที่ไม่ใช้การบล็อก ซึ่งเป็นการทำงานที่เป็นแบบระบบปฏิบัติการโปรดทราบว่าธุรกิจของตัวเองเป็นชนิดใด สามารถตั้งค่าจำนวนกระบวนการได้เทียบเท่ากับ 3 เท่าของจำนวนคอร์ CPU หรือมากกว่านั้น พูดได้เลยการต้องจำนองเพิ่มจำนวนกระบวนการไม่ได้ทำให้ผลการใช้งานดีขึ้น ทำให้ค่าใช้สอดคลาขึ้น มีผลกระทบต่อประสิทธิภาพบางอย่าง