2012-02-14 4 views
1

저는 Heroku에서 Unicorn을 사용하고 있습니다. 나는 웹 다이나믹스를 확장 할 때 알아 차렸다. 이 새로운 웹 다이 노스는 스폰 된 직후에 액세스됩니다. 로그에 다음과 같이 표시됩니다.유니콘 프로세스를 생성하고 요청을 처리하기 위해 유니 코드 프로세스가 액세스되기 전에 완전히로드 할 수 있습니까?

Request timeout" error with 30 seconds limit (i.e. service=30000ms) 

dyno가 시작 되 자마자 트래픽이 전송됩니다. 이러한 요청이있을 때 Unicorn이 여전히 하위 프로세스를 돌리고 있다면, 특히 응용 프로그램이 부팅하는 데 시간이 오래 걸리면 시간이 초과 될 수 있습니다.

응용 프로그램이 완전히로드 될 때까지 요청에 의해 액세스되지 않고 Unicorn 하위 프로세스를 생성하는 방법이 있습니까?

답변

0

이것은 실제로 내가 전에 만난 다른 것입니다.

본질적으로 규모를 조정하면 자신의 dyno가 생성되고 귀하의 슬러그가 그 위에 배치됩니다. 이 시점에서 귀하의 슬러그가 초기화됩니다. 라우팅 메쉬는 dyno가 위로 올라가서 흔들릴 준비가되어있는 것처럼 요청이 발생한 순간부터 요청을 보내기 시작할 것입니다.

그러나 (이 문제를 발견 한 곳입니다.) 응용 프로그램이 요청에 응답하기 위해 스핀 업하는 시간이 필요합니다 (유니콘이 작동 중이며 Rails가 아직 초기화 중입니다). 그리고 30 초의 시간 초과가 발생합니다.

이 문제를 해결할 수있는 유일한 방법은 내 앱을 30 초 이내에 반복적으로 시작하여 반복적으로 현재 버전의 Rails로 업데이트하는 것입니다. 또한 업데이트로 일부 증가를 발견했습니다. try running on Ruby 1.9.3

+0

안녕하세요, 현재 Rails 3.1.3에서 실행 중입니다. 3.2 배 제안 하시겠습니까? 불행하게도, Heroku Cedar 스택은 아직 Ruby 1.9.2를 지원하지 않습니다. 지난 번 내가 –

+0

을 확인했을 때 그것은 확실히 1.9.2를 지원합니다. 1.9.3 지원은 현재 베타 버전이지만 절대적으로 괜찮습니다. –

+0

Ooop, typo. 말하자면. Cedar Stack은 1.9.3을 지원하지 않습니다. 하지만 실제로 실험 모드입니다. 레일 3.2.x 또는 3.1.x와의 차이점을 제안하셨습니까? –