我们有一个运行于乘客+ nginx设置的sinatra应用程序,目前我们正面临一个会话随机丢失的问题。我们还尝试在乘客中禁用智能产卵,但它没有用。服务器负载和内存使用也很好。
但我们可以通过在nginx配置中设置passenger_max_pool_size 1;
来解决问题。
为什么当游泳池大小大于1时会发生此问题? 这种配置是否会导致我们的应用程序出现性能问题,因为乘客无法生成新实例?
nginx sites-enabled 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;
}
答案 0 :(得分:0)
您需要确保指定会话密钥,否则每次进程启动时都会自动生成一个会话密码,从而消除任何现有会话。
例如:
use Rack::Session::Cookie, :key => 'rack.session', :path => '/', :secret => 'yoursessionsecretgoeshere'
编辑:您没有遇到池大小为1的问题,因为您只有一个进程正在运行。如果您重新启动该过程,如果您没有秘密设置,您可能会看到会话丢失。