2012-03-10 4 views
1

그래서 Heroku는 점점 더 많은 요청을 처리하기 위해 여러 dynos를 실행할 수 있습니다. 이 확장 성은 가장 큰 가치 제안 중 하나입니다.동일한 응용 프로그램에 여러 레일 서버 실행

로컬로 비슷한 것이 가능합니까? 본질적으로, 나는 앱을 개발하고 있으며, 테스트 할 많은 요청과 계산을 실행한다. 당분간 많은 계산이 레일스 서버에 의해 실행되므로 정렬 된 자료가있는 페이지를로드하라는 요청에 1 분 이상 소요될 수 있습니다. 결국 나는 이러한 계산을 delayed_job을 사용하여 백그라운드로 옮길 것입니다.하지만 여전히 알고리즘을 개발하고 있으므로 아직 변경하지 않으려 고하고 있습니다.

내가 궁금한 점은 하나의 웹 사이트를 클릭하고 다른 컴퓨터에서이 계산을 실행할 수 있도록 여러 개의 레일 서버를 실행할 수 있습니까? 다른 포트에서 두 개를 열어 보았지만 거의 동시에 실행되지는 않았습니다.

모든 조언을 크게 듣습니다!

답변

1

제 조언은 이제 백그라운드 작업 방법을 사용하는 것입니다. 백그라운드에서 동일한 코드를 실행하면됩니다. 당신은 5 분 안에 그것을 할 수 있어야합니다. 지금 당장 당신은 코드에 쓸 수있는 다른 솔루션에 많은 시간을 할애하고있을 것입니다. 일단 delayedJob, bachgrouddrb 또는 다른 옵션을 사용하기 시작하면 되돌아 보지 않습니다.
좋은 게시물에 당신을 도울 수 여기에 있습니다 :
http://www.tobinharris.com/past/2009/3/9/6-ways-to-run-background-jobs-in-rubyonrails/과도
Ruby on Rails: How to run things in the background?

0

예 U에 의해, 예를 들어 그것을 할 수 있습니다 : 당신의 포트에 5 개 서버를해야합니다 그리고

$ for port in `seq 3000 3005`; do run server --on-port $port; done 

3000 ~ 3005. 그런 다음 일부 역방향 프록시를 사용하여 모든 요청을 하나의 포트에서 수신 한 다음 서버로 보냅니다.

이 작업을 수행하려면 foreman을 시도해도되지만, 테스트를 위해이 작업을 수행해야하는 경우라면 서버에없는 응용 프로그램 디자인에 잘못된 것이 있습니다. 예를 들어 과 같은 일부 작업을 이동하여 외부 프로세스에서 실행해야합니다 (예 : 일부 문서 생성 또는 데이터 구문 분석).

0

결국 나는 계산을 직원들에게 나누는 것이 좋을 것이라고 말한 다른 사람들을 반향시킵니다. delayed_job 대신에 Resque를 살펴 보는 것이 좋습니다. ResqueRedisToGo과 함께 개발 중이며 모든 Heroku 기반 프로덕션 응용 프로그램과 함께 사용합니다. Euclid Inc.는 Heroku 및 Redis의 큰 팬입니다. 그 동안

, 당신은 유니콘감독와 개발 행위 등의 다이노를 얻을 수 있습니다. 우리는 Heroku 기반 응용 프로그램을 더욱 효율적으로 만들기 위해 제작시 Unicorn을 사용합니다.

유니콘은 쉽게 구성 할 수 있습니다. 적절한 젬을 추가하고 Procfile을 생성하면 코드를 변경하지 않고도 여러 프로세스를 사용할 수 있습니다.

관련 문제