무슨 일이 일어나고 있는지는 응용 프로그램 및 / 또는 ApplicationSpawners가 시간 초과로 인해 종료되고 있다는 것입니다. 새 요청을 처리하기 위해 Passenger는 애플리케이션의 새 복사본을 시작해야합니다. 이는 빠른 시스템에서도 몇 초가 걸릴 수 있습니다. 문제를 해결하기 위해 애플리케이션을 활성 상태로 유지하는 데 사용할 수있는 몇 가지 Apache 구성 옵션이 있습니다.
다음은 내 서버에서 수행 한 작업입니다. PassengerSpawnMethod 및 PassengerMaxPreloaderIdleTime은 상황에서 가장 중요한 구성 옵션입니다.
PassengerSpawnMethod smart
PassengerPoolIdleTime 1000
PassengerMaxPreloaderIdleTime 0
PassengerMaxRequests 5000
"스마트"스폰 모드를 사용하고 PassengerMaxPreloaderIdleTime을 끄면 Passenger는 항상 메모리에 애플리케이션 사본 1 개를 보관합니다 (Apache 시작 후 첫 번째 요청 이후). 개별 Application
리스너는 fork
이 사본에서 추출되며 이는 매우 저렴한 작업입니다. 너무 빨리 발생하여 애플리케이션이 리스너를 생성해야했는지 여부를 알 수 없습니다.
앱이 스마트 스폰과 호환되지 않는 경우, 나는 큰 PassengerPoolIdleTime을 유지하고 리스너가 살아남을 수 있도록 curl과 cronjob 또는 monit 또는 무언가를 사용하여 주기적으로 사이트를 방문하는 것이 좋습니다.
여객 사용 설명서는 다음과 추가 구성 옵션에 대한 멋진 참조입니다.
편집 : 앱이 스마트 스폰과 호환되지 않는 경우 매우 좋은 몇 가지 새로운 옵션 이 있습니다.
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/
PassengerMinInstances 3
따라서 PassengerPreStart와 PassengerMinInstances를 결합하면 Passenger는 아파치로드 직후 3 개의 인스턴스를 스핀 업하고 항상 최소 3 개의 인스턴스를 유지하므로 사용자가 지연을 거의 볼 수 없습니다.
또는 PassengerMaxPreloaderIdleTime 0
이미 스마트 스폰 (권장)을 사용 중인 경우 추가 PassengerPreStart
하여 즉시 시작의 추가 이점을 얻을 수 있습니다 .
phusion.nl 의 영웅들에게 감사드립니다 !