$redis = Redis.new
redis-rbはスレッドセーフであるため、Unicornのafter_forkを入れないことの悪影響は何ですか?私に複数の労働者がいると仮定します。
そのコード行をenvironment.rbまたはイニシャライザーに配置するのとは対照的に?
$redis = Redis.new
redis-rbはスレッドセーフであるため、Unicornのafter_forkを入れないことの悪影響は何ですか?私に複数の労働者がいると仮定します。
そのコード行をenvironment.rbまたはイニシャライザーに配置するのとは対照的に?
after_fork
スレッドセーフとはほとんど関係がありません。これは、スレッドを生成するときではなく、親プロセスが子プロセスをフォークするときに使用されます。
なぜ気にする必要があるのか
フォークしない場合は、おそらくフォークしないでしょう。
フォークすると、親プロセスと子プロセスがファイルとソケット記述子(db接続、redis接続)を共有します。子でRedisへの接続を再度開かない場合、親からのデータを子からのデータとソケットでインターリーブできます。
何が起こっているのかについてのより詳細な説明については、RubyPipesのUnixシェルを読んでください。