Nên mở bao nhiêu tiến trình
Cách cấu hình số tiến trình
Số tiến trình được xác định bởi thuộc tính count (hệ thống windows không hỗ trợ cài đặt số tiến trình), ví dụ như mã bên dưới
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:2345");
// ## Khởi động 4 tiến trình để cung cấp dịch vụ ##
$http_worker->count = 4;
...
Cài đặt số tiến trình cần xem xét các điều kiện sau
-
Số lõi CPU
-
Kích thước bộ nhớ
-
Xu hướng công việc là tập trung vào IO hay CPU
Nguyên tắc cài đặt số tiến trình
-
Tổng số bộ nhớ mà mỗi tiến trình chiếm dụng cần nhỏ hơn tổng bộ nhớ (nói chung, mỗi tiến trình công việc chiếm khoảng 40M bộ nhớ).
-
Nếu là loại IO tập trung, tức là trong công việc có liên quan đến một số IO chặn, chẳng hạn như truy cập Mysql, Redis và các lưu trữ khác thường là truy cập chặn, số tiến trình có thể được mở rộng hơn, ví dụ cài đặt thành gấp 3 lần số lõi CPU. Nếu trong công việc có nhiều chờ đợi chặn, có thể tăng số tiến trình nữa, như là gấp 8 lần số lõi CPU hoặc thậm chí cao hơn. Lưu ý rằng IO không chặn thuộc về loại CPU tập trung, không thuộc về loại IO tập trung.
-
Nếu là loại CPU tập trung, tức là không có chi phí IO chặn trong công việc, chẳng hạn như đọc tài nguyên mạng bằng IO không đồng bộ, trong trường hợp không bị chặn bởi mã công việc, có thể cài đặt số tiến trình bằng với số lõi CPU.
Giá trị tham khảo cho số tiến trình
Nếu mã công việc nghiêng về loại IO tập trung, hãy cài đặt số tiến trình theo mức độ tập trung vào IO, chẳng hạn 3-8 lần số lõi CPU.
Nếu mã công việc nghiêng về loại CPU tập trung, có thể cài đặt số tiến trình bằng số lõi CPU.
Lưu ý
IO của Workerman là không chặn, chẳng hạn như Connection->send và các thao tác khác đều là không chặn, thuộc về loại CPU tập trung. Nếu không rõ công việc của bạn nghiêng về loại nào, có thể cài đặt số tiến trình khoảng 3 lần số lõi CPU.
Ngoài ra, số tiến trình không phải càng nhiều càng tốt, mở quá nhiều tiến trình có thể làm tăng chi phí chuyển đổi tiến trình, ảnh hưởng đến hiệu suất nhất định.