I 사이트 우분투 9.10에서 생산 모드에서 실행 레일 응용 프로그램과 resque 근로자를 실행은 8.4.2레일 Resque 근로자 PGError 실패 : 서버가 연결을 종료 예기치 않게
을, 2.3.4, 루비 EE 2010.01 레일 PostgreSQL을 가지고근로자가 지속적으로 오류를 제기했습니다. PGError : 서버가 예기치 않게 연결을 종료했습니다.
rails app 클래스를로드하는 동안 master resque 프로세스가 db에 대한 연결을 설정합니다 (예 : authlogic이 User.acts_as_authentic을 사용할 때 해당 작업을 수행함). fork() 프로세스에서 해당 연결이 손상됩니다. 그래서 다음 forked 아이들은 깨진 글로벌 ActiveRecord :: Base.connection의 종류를 얻을
나는이 sample code와 유사한 행동을 재현 할 수있다. (AFAIK, libpq의 사용자는 어쨌든 fork 된 프로세스에서 연결을 다시 만들 것을 권장합니다. 그렇지 않으면 안전하지 않습니다)
그러나 이상한 점은 직접 pgsql 연결 대신 pgbouncer 또는 pgpool-II를 사용하면 이러한 오류가 나타나지 않는다는 것입니다 .
그래서 일반적인 연결에서 끊어진 이유와 연결 풀로 작업하는 이유를 어디에서 어떻게 확인해야합니까? 아니면 합리적인 해결 방법?
감사합니다. 그래서 나는 단순히 훅을 추가했습니다 : Resque.after_fork = Proc.new {ActiveRecord :: Base.establish_connection} –
비슷한 문제가있을 수 있습니다. 어떻게 그리고 어디에서 "후크"를 추가했는지 말해 줄 수 있습니까? –
하단 링크가 깨졌습니다 – botbot