Rails 3.1线程安全损坏

时间:2011-09-28 12:47:57

标签: ruby-on-rails ruby-on-rails-3.1 thin

或类似的东西。我已经将几个应用程序从Rails 3.0升级到Rails 3.1。它们在Thin上运行,启用了多线程选项,它们都配置了threadsafe!。在Rails 3.0中工作得很好。但在3.1中,经过一些请求后,事情开始放缓。在几个请求之后,页面挂起N秒(其中N是我的db超时),我收到此错误:

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 个答案:

答案 0 :(得分:1)

看起来这是一个错误。它有一个补丁和拉取请求。希望Rails将它合并进去。在此之前,多线程Rails应用程序将不适用于Thin。

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