2011-09-28 5 views
4

또는 이와 비슷한 것입니다. 나는 Rails 3.0에서 Rails 3.1로 몇몇 애플 리케이션을 업그레이드했다. 이들은 다중 스레드 옵션이 활성화 된 Thin에서 실행 중이며 모두 threadsafe!로 구성됩니다. Rails 3.0에서 훌륭하게 작동했습니다. 그러나 3.1에서는 몇 가지 요구가 있은 후에 상황이 느려지 기 시작합니다. 몇 가지 더 많은 요청 후, 페이지 (N 내 DB 시간 제한입니다) 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 로의 업그레이드입니다. 내가 할 수있는 일이 있습니까, 아니면 이것이 레일스의 퇴행입니까?

답변

1

버그입니다. 패치와 풀 요청이 있습니다. 그때까지는 다중 스레드 레일 애플리케이션이 Thin에 작동하지 않습니다. 수정 오늘 레일 마스터에 병합 것처럼

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

+0

보인다. 그것이 3.1.1에있을 것이라고 생각하지 말고, 그 이후의 릴리스에서 잘하면. – bioneuralnet