2011-09-28 60 views
4

或类似的东西。我已经将几个应用程序从Rails 3.0升级到了Rails 3.1。它们在启用多线程选项的情况下运行在Thin上,它们都配置了线程安全!在Rails 3.0中工作得很好。但在3.1中,经过几次请求后,事情开始放缓。几个请求后,网页挂N秒(其中N是我的数据库超时),我得到这个错误:导轨3.1线程安全破坏

ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5 seconds. The max pool size is currently 5; consider increasing it.): 

的5这些默认值和5已经发现,在过去,应该仍然是精细。同样增加它们并不能解决问题,尽管它需要更长时间来显示。我应该强调,在这些时候,我一直是唯一访问这些应用程序的人。当我将Thin缩小到单线程模式时,一切都按预期工作。

这发生在MySQL,SQLite,Ruby 1.8.7和Ruby 1.9.2上。薄不变。我能找到的唯一变量是升级到Rails 3.1。有什么我可以做的,或者这是Rails中的一个回归?

回答

1

看起来像这是一个错误。有一个补丁和拉取请求。希望Rails将它合并。在此之前,多线程Rails应用程序将无法在Thin上运行。

https://github.com/rails/rails/pull/1670

+0

貌似修复今天被合并到Rails高手。不要以为它会在3.1.1中,但希望在之后的发布中。 – bioneuralnet