1

我有一个在乘客上运行 MRI Ruby 和 Rails 3.2 的大型项目,其应用程序在设计时并未考虑线程安全,并且该应用程序通过 DelayedJob 处理邮件,数据库为此付出了沉重的代价。

sidekiq railscast http://railscasts.com/episodes/366-sidekiq中提到了一些可能的问题,包括:

  1. 数据库连接限制(如果使用 1 的线程池,则数据库连接限制应加倍)
  2. 线程安全(这可能是表演的终结者)
  3. 纤维安全?这是 AR 的问题吗?

所以,问题是:

  1. 使一个大项目的线程安全到足以使邮件生成在乘客进程内的线程中工作的可行性如何?(邮件非常复杂,依赖于 AR)
  2. 使用 sidekiq 时出现同样的问题,“让一个大型项目线程安全以使邮件生成能够使用 sidekiq 工作有多可行?(邮件足够复杂,依赖于 AR)”
  3. 除了 db 连接限制和线程安全问题,还有什么需要考虑或不太明显的 got'chas 我没有预见到?
4

1 回答 1

1

我认为你在这里混淆了一些东西。

我从未使用过sidekiq,但我认为您不必thread_safe!在Rails 应用程序中打开才能使用它。

AFAIK 这只是为了请求处理有一个锁,或者在 thread_safe 中没有锁!模式,因此 Rails 进程可以并行处理多个请求。

使用 sidekiq 时,这不应该是您关心的问题之一。只是您的电子邮件处理代码需要是线程安全的。不过,只有项目维护者才能回答这个问题。

于 2013-12-15T11:35:59.717 回答