2017-11-21 1 views
1

승객 + nginx 설정에서 실행중인 sinatra 앱이 있습니다. 현재 세션이 무작위로 손실된다는 문제가 있습니다. 우리는 승객의 똑똑한 산란을 막아 보았지만 작동하지 않았습니다. 서버로드 및 메모리 사용량도 좋습니다.루비 앱에서 승객 + nginx 설정으로 세션이 무작위로 손실 됨

그러나 우리는 nginx 구성에서 passenger_max_pool_size 1;을 설정하여 문제를 해결할 수있었습니다.

풀 크기가 1보다 큰 경우 왜이 문제가 발생합니까?
승객이 새 인스턴스를 생성하기 때문에이 구성으로 인해 앱 성능 문제가 발생합니까?

의 nginx 사이트 사용 conf의

server { 
    listen 8082; 
    server_name 0.0.0.0; 
    root /home/deploy/manager/current/app/public; 
    passenger_ruby /usr/local/rvm/gems/ree-1.8.7-2012.02/wrappers/ruby; 
    passenger_enabled on; 

} 
+1

어떤 세션 스토어를 사용하고 있습니까? 기본 쿠키 세션은 여기에서 잘 작동하지만,'Rack :: Session :: Pool'을 사용한다면 각 프로세스는 자신의 세션 세트를 갖게 될 것이므로 설명하는 것처럼 세션이 손실 될 것입니다. – matt

답변

0
당신이 세션 비밀을 지정할 수 있는지 확인하는 것이 좋습니다

, 다른 하나는 자동 될 것입니다 기존의 모든 세션을 닦아 프로세스가 시작할 때마다 생성됩니다.

예 :

use Rack::Session::Cookie, :key => 'rack.session', :path => '/', :secret => 'yoursessionsecretgoeshere' 

편집 : 당신은 단지 하나의 프로세스 실행을 가지고 있기 때문에 당신은 하나의 풀 (pool) 크기로 문제가되지 않습니다. 이 프로세스를 다시 시작하면 비밀 세트가없는 경우 세션이 중단되는 것을 볼 수 있습니다.

관련 문제