どのくらいのプロセスを起動すべきか

プロセス数の設定方法

プロセス数は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、業務がIO密度かCPU密度か

プロセス数設定の原則

1、各プロセスが占有するメモリの合計は総メモリより小さくなる必要があります(一般的に、各業務プロセスは約40Mのメモリを占有します)。

2、IO密度の場合、つまり業務にいくつかのブロッキングIOが関与している場合(例えば、一般的なMySQL、Redisなどのストレージへのアクセスはブロッキングアクセスです)、プロセス数は多めに設定できます。CPUコア数の3倍に設定することができます。業務に関連するブロッキングの待機が非常に多い場合は、プロセス数をさらに増やすことができます。例えば、CPUコア数の8倍以上も可能です。注意:ノンブロッキングIOはCPU密度に属し、IO密度には属しません。

3、CPU密度の場合、つまり業務にブロッキングIOのオーバーヘッドがない場合(例えば、非同期IOを使用してネットワークリソースを読み取るなど)、プロセス数をCPUコア数と同じに設定できます。

プロセス数設定の参考値

業務コードがIO密度に偏っている場合は、IOの密度に応じてプロセス数を設定します。例えば、CPUコア数の3-8倍。

業務コードがCPU密度に偏っている場合は、プロセス数をCPUコア数に設定できます。

注意

Workerman自体のIOはすべてノンブロッキングです。例えば、Connection->sendなどはノンブロッキングで、CPU密度の操作に該当します。自分の業務がどのタイプに偏っているか不明な場合は、プロセス数をCPUコア数の約3倍に設定すれば大丈夫です。また、プロセス数は多ければ良いというわけではありません。プロセスが多すぎると、プロセス切り替えのオーバーヘッドが増大し、パフォーマンスに影響を与える可能性があります。