2013-04-16 6 views
4

ActiveRecord에 대한 연결 시간 초과를 늘릴 수있는 방법이 있습니까?ActiveRecord 연결 시간 초과를 늘리는 방법은 무엇입니까?

내가

(액티브 :: ConnectionTimeoutError)는 "오초 내에서 데이터베이스 연결을 얻을 수 (5)의 풀 크기와 25 개 이상의 스레드를 가질 때이 오류가 계속은 (5.000144774 초를 기다렸다) 최대 풀 크기는 현재 3이며이를 늘릴 것을 고려하십시오. "

연결 시간 제한을 늘릴 방법이없는 경우 스레드가 가능한 빨리 연결을 사용하고 있는지 확인하는 가장 좋은 방법은 무엇입니까?

답변

1

당신은 당신의 database.yml 파일에

pool: 5 

를 추가 할 수 있습니다.

또한 checkout_timeout 값을 설정할 수 있지만 응용 프로그램에서 응답하는 데 시간이 더 걸릴 수 있으므로 권장하지 않습니다. 시스템에 많은 요청이있을 때 오류가 발생하면 각 요청을 완료하는 데 시간이 오래 걸리는 대신 가능한 더 많은 동시 연결을 제공하는 것이 좋습니다. 데이터베이스 구성에서

+0

"pool"은 연결 풀의 크기를 변경합니다. 연결 획득 시간 초과가 아닙니다. – barbolo

+0

@barbolo 오류에 대한 제안에 의하면 '최대 풀 크기는 현재 3입니다. 그것을 높이는 것을 고려해라. ' – fotanus

-1

(예 config/database.yml.) 당신이 초 모든 데이터베이스 연결을위한 연결 시간 제한 설정할 수 있습니다

production: 
    host: HOST 
    port: 5432 
    connect_timeout: 30 
    ... 
: 30 초로 연결 시간 제한을 설정하는 예를 들어

을,

이 값은 사용하는 어댑터 (예 : PostgreSQL 어댑터와 함께)에 따라 달라 지지만 기본 연결 제한 시간은 60 초입니다.

+0

당신이 링크하는 문서는'connect_timeout'이 아니라'checkout_timeout'을 언급하고있다. 정확히 말하자면 - 코드가 AR의 연결 풀에서 연결을 기다리는 시간. OP가 원하는 것일 수도 있고 아닐 수도 있습니다. 확실하지 않습니다. 풀에서 연결을 얻으려면 60 초를 기다리거나 수영장에서 더 많은 연결이 필요하거나 데이터베이스 액세스 패턴의 재구성이 필요한 경우 checkout_timeout을 60 초로 설정하는 것이 좋습니다. – jrochkind

2

docs에 따르면 데이터베이스 구성 파일에 "checkout_timeout"옵션을 설정해야합니다.

checkout_timeout : 초 수를 차단하고 시간 초과 오류 (기본 5 초) 포기하고 제기하기 전에 연결 기다려야합니다.

관련 문제