2022-06-02 2022/06/01 PumaとUnicorn Unicorn blocking マルチプロセス forkを使ったmaster-slave unicorn-masterが起動するとunicorn-childをforkして生産する。暇になった,unicorn-childがunicorn-masterにリクエストを要求する。masterは要求のあったchildに処理を行わせるだけでよく,重い処理を行っているchildが処理を担当することがなくなる メモリ効率がいい プロセスが死ぬわけでないので,ダウンタイムが発生しない デプロイが早くダウンタイムが発生しない ソースコードをmasterプロセスだけが読み込んでおけば良いため スロークライアント(リクエストが遅いクライアント)に弱い スロークライアントが来た場合,workerが待ちのまま止まってしまう リバースプロキシを挟んで,スロークライアントをバッファしてもらう必要がある Puma マルチプロセス マルチスレッド I/O waitが発生したときに,別スレッドの処理を進められる スレッドセーフな実装をする必要がある スロークライアントが来ても1つのスレッドが埋まるだけ 参考 blog.kasei-san.com blog.willnet.in techracho.bpsinc.jp qiita.com