Quanti processi dovrebbero essere attivati
Come impostare il numero di processi
Il numero di processi è determinato dall'attributo count (i sistemi Windows non supportano l'impostazione del numero di processi), ad esempio nel codice seguente:
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:2345");
// ## Avvia 4 processi per fornire servizi ##
$http_worker->count = 4;
...
Considerazioni per l'impostazione del numero di processi
-
Numero di core CPU
-
Dimensione della memoria
-
La natura del carico di lavoro è più orientata verso operazioni I/O intensive o CPU intensive
Principi per l'impostazione del numero di processi
-
La somma della memoria occupata da ciascun processo deve essere inferiore alla memoria totale (generalmente ogni processo aziendale occupa circa 40M di memoria)
-
Se il carico di lavoro è I/O intensive, ovvero se il lavoro coinvolge alcune operazioni I/O bloccanti, come l'accesso a Mysql, Redis e altri storage che sono generalmente accessi bloccanti, il numero di processi può essere aumentato, ad esempio configurandolo a 3 volte il numero di core CPU. Se ci sono molte attese bloccanti nel carico di lavoro, il numero di processi può essere ulteriormente aumentato, ad esempio 8 volte il numero di core CPU o anche di più. Nota che le operazioni I/O non bloccanti appartengono alla categoria CPU intensive e non a quella I/O intensive.
-
Se il carico di lavoro è CPU intensive, ovvero se nel lavoro non ci sono costi I/O bloccanti, ad esempio utilizzando I/O asincrono per leggere risorse di rete, in cui il processo non viene bloccato dal codice aziendale, il numero di processi può essere impostato uguale al numero di core CPU.
Valori di riferimento per l'impostazione del numero di processi
Se il codice aziendale è orientato verso un carico di lavoro I/O intensive, impostare il numero di processi in base all'intensità dell'I/O, ad esempio da 3 a 8 volte il numero di core CPU.
Se il codice aziendale è orientato verso un carico di lavoro CPU intensive, il numero di processi può essere impostato uguale al numero di core CPU.
Attenzione
Le operazioni I/O di Workerman sono tutte non bloccanti, ad esempio Connection->send sono non bloccanti e appartengono a operazioni CPU intensive. Se non sei sicuro di quale tipo di lavoro stai svolgendo, puoi impostare il numero di processi a circa 3 volte il numero di core CPU. Inoltre, non è sempre meglio avere più processi; se si attivano troppi processi, il costo per il cambio di processo aumenta, il che può influire sulle prestazioni.