非线程安全Rails应用配置Puma -t1:1时的内部线程安全疑虑
非线程安全Rails应用使用Puma
-t 1:1 的线程安全疑问解答 Puma官方文档指出:“请注意,Puma还会出于内部目的自行创建线程(例如处理慢速客户端)。因此,即使指定 -t 1:1,应用中也会创建约7个线程。”
如果你用Puma配置了 -t 1:1,同时你的Rails应用是非线程安全的,不需要担心Puma内部创建的线程引发线程安全问题。
原因很明确:Puma的内部线程只负责自身的底层工作,比如处理慢速客户端连接、管理网络IO等,这些线程不会执行你的Rails应用业务代码。你配置的 -t 1:1 已经严格限制了用于运行应用请求的线程数为1,同一时间只有一个线程在处理你的应用逻辑,完全满足非线程安全应用的单线程运行要求。那些额外的内部线程和你的应用代码完全隔离,不会带来线程安全风险。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

