[英]No. of redis client connections is getting equals to no. of instances passenger forks even though after_fork is not being placed
[英]What happens if I don't $redis = Redis.new in after_fork?
由於redis-rb是線程安全的,因此不將$redis = Redis.new
放入Unicorn的after_fork有什么負面影響? 假設我有一個以上的工人。
與僅將那行代碼放入environment.rb或初始化器相反?
after_fork
與線程安全性無關。 它在父進程派生子進程時使用,而不是在生成線程時使用。
為什么你應該關心
如果您從不分叉,您可能不會。
進行分叉時,父進程和子進程共享文件和套接字描述符(db連接,redis連接)。 如果不重新打開子級中與Redis的連接,則可以將父級中的數據與子級中的數據交織在套接字上。
閱讀Ruby Pipes中的Unix Shell,了解發生了什么的詳細說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.