Сколько процессов следует запустить
Как установить количество процессов
Количество процессов определяется атрибутом 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
-
размер памяти
-
характер бизнеса: IO-емкий или CPU-емкий
Принципы установки количества процессов
-
Суммарное использование памяти каждым процессом должно быть меньше общего объема памяти (в общем случае, каждый бизнес-процесс использует около 40 МБ памяти)
-
Если это IO-емкая задача, то есть бизнес включает в себя некоторые блокирующие операции ввода-вывода, например, доступ к MySQL, Redis и другим хранилищам, которые работают в режиме блокировки, количество процессов можно увеличить, например, установить в 3 раза больше количества ядер CPU. Если в бизнесе присутствует много блокирующих ожиданий, количество процессов можно увеличить, например, до 8 раз больше количества ядер CPU или даже выше. Заметьте, что неблокирующие операции ввода-вывода относятся к CPU-емким, а не к IO-емким.
-
Если это CPU-емкая задача, то есть в бизнесе нет накладных расходов на блокирующий ввод-вывод, например, использование асинхронного ввода-вывода для чтения сетевых ресурсов, когда процесс не блокируется кодом бизнес-логики, количество процессов можно установить равным количеству ядер CPU.
Рекомендуемое количество процессов
Если бизнес-код больше ориентирован на IO, количество процессов следует устанавливать в зависимости от степени IO-емкости, например, от 3 до 8 раз больше количества ядер CPU.
Если бизнес-код больше ориентирован на CPU, количество процессов можно установить равным количеству ядер CPU.
Внимание
IO, используемый самим Workerman, является неблокирующим, например, Connection->send и другие операции являются неблокирующими и относятся к CPU-емким операциям. Если вы не уверены, к какому типу относится ваш бизнес, установите количество процессов примерно в 3 раза больше количества ядер CPU.
Кроме того, количество процессов не должно быть избыточным; слишком большое количество процессов увеличивает накладные расходы на переключение процессов и может негативно сказаться на производительности.