2017-05-07 2 views
1

Pourquoi Puma crée-t-il plusieurs PID si son multi-thread?Pourquoi Puma crée-t-il plusieurs PID si c'est un multi-thread au lieu d'un multi-processus?

Je pensais que les multiples threads existeraient dans le même processus.

Lors du démarrage de Puma sur place:

=> Booting Puma 
=> Rails 5.0.0.1 application starting in development on http://localhost:3000 
=> Run `rails server -h` for more startup options 
[22095] Puma starting in cluster mode... 
[22095] * Version 3.6.0 (ruby 2.2.2-p95), codename: Sleepy Sunday Serenity 
[22095] * Min threads: 1, max threads: 1 
[22095] * Environment: development 
[22095] * Process workers: 2 
[22095] * Preloading application 
[22095] * Listening on tcp://localhost:3000 
[22095] Use Ctrl-C to stop 
[22095] - Worker 0 (pid: 22183) booted, phase: 0 
[22095] - Worker 1 (pid: 22184) booted, phase: 0 

Lors de l'exécution ps aux | grep puma:

me 22184 ... puma: cluster worker 1: 22095 [app]  
me 22183 ... puma: cluster worker 0: 22095 [app] 
me 22095 ... puma 3.6.0 (tcp://localhost:3000) [app] 
me 22289 ... grep puma 

J'ai appris sur les threads vs processus, et je pensais qu'un fil est un « chemin d'exécution à l'intérieur un processus ", alors cela m'a paru déroutant.

Répondre

2

Puma est un serveur à thread mais permet également plusieurs travailleurs (processus). Si vous regardez les journaux d'initialisation, il mentionne combien de workers il a engendré.

[22095] * Process workers: 2 

Ceci est appelé le mode cluster de Puma. Chaque processus générera

[22095] * Min threads: 1, max threads: 1 

quantité de threads pour gérer les demandes simultanément.

En savoir plus: Puma Clustered Mode