[RUBY-ON-RAILS] 느린 초기 서버 시작 Phusion 여객 및 레일을 사용하는 경우
RUBY-ON-RAILS느린 초기 서버 시작 Phusion 여객 및 레일을 사용하는 경우
우리가 작은 레일 스테이징 서버 테스트 것들을 밖으로에 한 설치되는 앱 Phusion 여객의 밴드 왜건에 점프합니다.
지금까지 사용에 아주 좋은되었습니다, 그 구성 및 응용 프로그램에게 바람을 배포 / 설치합니다. 문제는 우리가 매우 자주 히트를하지 않습니다 사용하고있는 사이트이며 백그라운드에서 서버를 종료 할 것으로 보인다. 이 요청을 처리하기 위해 새로운 서버를 시작할 때까지 누군가가 사이트에 갈 때 의미 그들은 정말 오래 기다려야합니다. 우리는 문서를 읽어 시도 꽤 몇 가지 다른 셋업 (스마트 / 스마트 LV2 모드, passengeridletime 등) 여전히 진정한 해결책을 발견하지 않았습니다했습니다.
Google 결과를 통해 갈고 후 우리는 정말 유용한 정보를 찾을 수 없습니다. 현재 우리는 실행하는 서버를 유지하는 시도에있는 모든 그리 자주 요청하는 cron 작업이 있습니다.
다른 사람이 문제가 발생하면 수정에 대한 조언을해야합니까?
해결법
-
==============================
1.무엇이 일어나고 당신의 응용 프로그램 및 / 또는 ApplicationSpawners 인해 타임 아웃으로 종료된다는 점이다. 새 요청을 처리하기 위해, 승객도 빠른 컴퓨터에, 몇 초가 걸릴 수 있습니다 응용 프로그램의 새 복사본을 시동한다. 이 문제를 해결하려면, 당신은 살아 응용 프로그램을 유지하는 데 사용할 수있는 몇 가지 아파치 설정 옵션이 있습니다.
무엇이 일어나고 당신의 응용 프로그램 및 / 또는 ApplicationSpawners 인해 타임 아웃으로 종료된다는 점이다. 새 요청을 처리하기 위해, 승객도 빠른 컴퓨터에, 몇 초가 걸릴 수 있습니다 응용 프로그램의 새 복사본을 시동한다. 이 문제를 해결하려면, 당신은 살아 응용 프로그램을 유지하는 데 사용할 수있는 몇 가지 아파치 설정 옵션이 있습니다.
여기에 내가 내 서버에 무슨 짓을했는지 구체적입니다. PassengerSpawnMethod 및 PassengerMaxPreloaderIdleTime가 현재 상황에서 가장 중요한 구성 옵션입니다.
# Speeds up spawn time tremendously -- if your app is compatible. # RMagick seems to be incompatible with smart spawning # Older versions of Passenger called this RailsSpawnMethod PassengerSpawnMethod smart # Keep the application instances alive longer. Default is 300 (seconds) PassengerPoolIdleTime 1000 # Keep the spawners alive, which speeds up spawning a new Application # listener after a period of inactivity at the expense of memory. # Older versions of Passenger called this RailsAppSpawnerIdleTime PassengerMaxPreloaderIdleTime 0 # Just in case you're leaking memory, restart a listener # after processing 5000 requests PassengerMaxRequests 5000
사용 "스마트"산란 모드와 PassengerMaxPreloaderIdleTime 해제하여, 승객은 (아파치를 시작한 후 첫 번째 요청 후) 항상 메모리에 응용 프로그램의 한 사본을 보관합니다. 개별 응용 프로그램 청취자가 슈퍼 싼 작업입니다 사본에서 포크됩니다. 너무 일이 빨리 당신은 응용 프로그램이 리스너를 생성했다 여부를 알 수 없습니다.
앱이 스마트 산란과 호환되지 않는 경우에, 나는 큰 PassengerPoolIdleTime을 유지하고 살아 리스너 숙박을 보장하기 위해 컬하고 cronjob에 또는 MONIT 또는 무언가를 사용하여 정기적으로 사이트를 타격 권 해드립니다.
승객 사용 설명서는 다음과 추가 구성 옵션에 대한 멋진 참조입니다.
편집하다: 앱이 스마트 산란과 호환되지 않는 경우, 아주 좋은 몇 가지 새로운 옵션이 있습니다
# Automatically hit your site when apache starts, so that you don't have to wait # for the first request for passenger to "spin up" your application. This even # helps when you have smart spawning enabled. PassengerPreStart http://myexample.com/ PassengerPreStart http://myexample2.com:3500/ # the minimum number of application instances that must be kept around whenever # the application is first accessed or after passenger cleans up idle instances # With this option, 3 application instances will ALWAYS be available after the # first request, even after passenger cleans up idle ones PassengerMinInstances 3
그래서, 당신은 PassengerPreStart 및 PassengerMinInstances을 결합 할 경우, 승객은 아파치로드 직후 3 개 인스턴스를 회전하며, 사용자가 거의 (면 적) 지연을 볼 수 없습니다, 그래서 항상 적어도 3 개 인스턴스를 유지합니다.
이미 PassengerMaxPreloaderIdleTime 0 (권장) 스마트 산란을 사용하는 경우 또는, 당신은 즉시 시작의 추가 혜택을 얻을 수 PassengerPreStart를 추가 할 수 있습니다.
phusion.nl의 영웅에 많은 감사합니다!
-
==============================
2.그냥 nginx에 번역하지 않습니다 모두 'PassengerMaxRequests'와 'PassengerStatThrottleRate'지침이 질문에 걸림돌 어떤의 nginx 서버 사용자가 넣다. 그러나 다른 사람은 할 수 :
그냥 nginx에 번역하지 않습니다 모두 'PassengerMaxRequests'와 'PassengerStatThrottleRate'지침이 질문에 걸림돌 어떤의 nginx 서버 사용자가 넣다. 그러나 다른 사람은 할 수 :
rails_spawn_method smart; rails_app_spawner_idle_time 0; rails_framework_spawner_idle_time 0; passenger_pool_idle_time 1000;
HTH!
편집 rails_spawn_method 승객에서 더 이상 사용되지 않습니다 3 대신 사용
passenger_spawn_method smart;
다른 모든 날짜까지 단지 좋다.
-
==============================
3.또한 PassengerMinInstances을 사용할 수 있습니다 :
또한 PassengerMinInstances을 사용할 수 있습니다 :
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances
이것은 PassengerPreStart와 결합 될 수있다
-
==============================
4.레:
레:
# Additionally keep a copy of the Rails framework in memory. If you're # using multiple apps on the same version of Rails, this will speed up # the creation of new RailsAppSpawners. This isn't necessary if you're # only running one or 2 applications, or if your applications use # different versions of Rails. RailsFrameworkSpawnerIdleTime 0
그냥 뭔가 추가하고 유용 할 수 있습니다.
현재 릴리스의 기본 스폰 방법 설정 때문에 프레임 워크 Spawner를 건너 뜁니다 "스마트 LV2"이다 프레임 워크 Spawner를 시간 제한은하지 않는 어쨌든 영향을 미치지 않을 것 명시 적으로 "스마트"에 스폰 방법을 설정합니다.
출처: http://groups.google.com/group/phusion-passenger/browse_thread/thread/c21b8d17cdb073fd?pli=1
-
==============================
5.호스트가 공유 서버 인 경우, 광산처럼, 당신은 설정을 변경할 수 없습니다 및 cron 작업과 함께 붙어있다.
호스트가 공유 서버 인 경우, 광산처럼, 당신은 설정을 변경할 수 없습니다 및 cron 작업과 함께 붙어있다.
-
==============================
6.나는이 문제를 가지고 있지만이 파일에는 쓰기 권한이 없었기 때문에 나는 승객의 설정을 변경할 수 없습니다. 나는 빠른 응답 내 응용 프로그램을 유지하는 도구 (http://www.wekkars.com)를 발견했다. 어쩌면 이것은 또한 당신을위한 해결책이 될 수 있습니다.
나는이 문제를 가지고 있지만이 파일에는 쓰기 권한이 없었기 때문에 나는 승객의 설정을 변경할 수 없습니다. 나는 빠른 응답 내 응용 프로그램을 유지하는 도구 (http://www.wekkars.com)를 발견했다. 어쩌면 이것은 또한 당신을위한 해결책이 될 수 있습니다.
-
==============================
7.승객의 버전을 확인하십시오. 그것은 이전 버전에 대한 RailsSpawnMethod <문자열>이었다.
승객의 버전을 확인하십시오. 그것은 이전 버전에 대한 RailsSpawnMethod <문자열>이었다.
(내 기억이 맞다 경우) 자세한 내용은 모두 레일 오래 된 여객 문서의 구성 지시 또는보고 승객을 대체 할 수 있도록하는 경우
from https://stackoverflow.com/questions/853532/slow-initial-server-startup-when-using-phusion-passenger-and-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 레일의 액티브 모델과 그 테이블의 이름을 변경하는 마이그레이션을 작성하려면 어떻게해야합니까? (0) | 2020.02.17 |
---|---|
[RUBY-ON-RAILS] 어떻게 레일의 현재 경로를 찾을 수 있습니까? (0) | 2020.02.17 |
[RUBY-ON-RAILS] 사용 rvmrc 또는 루비 버전 파일은 RVM와 프로젝트 gemset를 설정하는 방법? (0) | 2020.02.17 |
[RUBY-ON-RAILS] AWS이있을 때 사람들은 왜 Heroku가 사용합니까? 무엇 AWS에서 Heroku가 구별? [닫은] (0) | 2020.02.17 |
[RUBY-ON-RAILS] ExecJS :: RuntimeError에를 - 실행 오류 응용 프로그램을 레일 (0) | 2020.02.17 |