簡體   English   中英

如果我在after_fork中不使用$ redis = Redis.new會怎樣?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM