我有一个在乘客上运行 MRI Ruby 和 Rails 3.2 的大型项目,其应用程序在设计时并未考虑线程安全,并且该应用程序通过 DelayedJob 处理邮件,数据库为此付出了沉重的代价。
sidekiq railscast http://railscasts.com/episodes/366-sidekiq中提到了一些可能的问题,包括:
- 数据库连接限制(如果使用 1 的线程池,则数据库连接限制应加倍)
- 线程安全(这可能是表演的终结者)
- 纤维安全?这是 AR 的问题吗?
所以,问题是:
- 使一个大项目的线程安全到足以使邮件生成在乘客进程内的线程中工作的可行性如何?(邮件非常复杂,依赖于 AR)
- 使用 sidekiq 时出现同样的问题,“让一个大型项目线程安全以使邮件生成能够使用 sidekiq 工作有多可行?(邮件足够复杂,依赖于 AR)”
- 除了 db 连接限制和线程安全问题,还有什么需要考虑或不太明显的 got'chas 我没有预见到?