Combien de processus devraient être ouverts

Comment définir le nombre de processus

Le nombre de processus est déterminé par la propriété count (la configuration du nombre de processus n'est pas supportée sous Windows), par exemple le code ci-dessous :

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

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

// ## Démarrer 4 processus pour fournir des services ##
$http_worker->count = 4;

...

Les conditions à prendre en compte pour définir le nombre de processus

  1. Nombre de cœurs CPU

  2. Taille de la mémoire

  3. Si l'activité est plutôt orientée vers des opérations IO intensives ou CPU intensives

Principes de définition du nombre de processus

  1. La somme de la mémoire occupée par chaque processus doit être inférieure à la mémoire totale (en général, chaque processus métier utilise environ 40 Mo de mémoire).

  2. Si le workload est orienté vers l'IO, c'est-à-dire si l'activité comprend certaines opérations d'IO bloquantes, par exemple les accès normaux à MySQL, Redis, etc., qui sont des accès bloquants, le nombre de processus peut être augmenté, comme le configurer à 3 fois le nombre de cœurs CPU. Si les attentes liées au blocage sont très nombreuses dans l'activité, le nombre de processus peut être encore augmenté, par exemple jusqu'à 8 fois le nombre de cœurs CPU, voire plus. Notez que les opérations non bloquantes en IO relèvent de l'intensif CPU et non de l'intensif IO.

  3. Si l'activité est orientée vers le CPU, c'est-à-dire s'il n'y a pas de coûts d'IO bloquants dans l'activité, par exemple en utilisant l'IO asynchrone pour lire des ressources réseau, où le processus ne sera pas bloqué par le code métier, on peut définir le nombre de processus égal au nombre de cœurs CPU.

Valeurs de référence pour la définition du nombre de processus

Si le code métier est orienté vers l'IO, définissez le nombre de processus en fonction du degré d'intensité IO, par exemple entre 3 et 8 fois le nombre de cœurs CPU.

Si le code métier est orienté vers le CPU, le nombre de processus peut être défini égal au nombre de cœurs CPU.

Remarque

L'IO de Workerman est lui-même non bloquant, par exemple Connection->send et d'autres sont non bloquants, ce qui en fait des opérations intensives en CPU. Si vous n'êtes pas sûr de l'orientation de votre activité, vous pouvez définir le nombre de processus à environ 3 fois le nombre de cœurs CPU. De plus, un plus grand nombre de processus n'est pas toujours meilleur ; un trop grand nombre de processus peut augmenter le coût du changement de processus, ce qui peut avoir un impact sur la performance.