2017-05-07 6 views
1

マルチスレッドの場合、Pumaは複数のPIDを作成するのはなぜですか?Pumaはマルチプロセスではなくマルチスレッドの場合、複数のPIDを作成するのはなぜですか?

複数のスレッドが同じプロセス内に存在すると考えました。

ローカルプーマを開始:

=> 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 

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 

私はプロセスの対スレッドについて学習してきた、と私は、スレッドが内部の実行の「パスであることを考えましたこれは私を混乱させてしまった。

答えて

2

プーマはスレッドサーバーですが、複数のワーカー(プロセス)も許可します。初期化ログを見ると、それが生成されたのは何番目のworkersであるかを示しています。

[22095] * Process workers: 2 

これは、プーマのクラスタ化モードと呼ばれます。各プロセスは、要求を同時に処理するためにスレッドの量を出すことがあります。

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

スレッドの量が同時に発生します。

詳細については、Puma Clustered Mode