随着乘客+ nginx设置,会话在ruby app上随机丢失

时间:2017-11-21 03:42:40

标签: ruby ubuntu nginx sinatra passenger

我们有一个运行于乘客+ 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;

}

1 个答案:

答案 0 :(得分:0)

您需要确保指定会话密钥,否则每次进程启动时都会自动生成一个会话密码,从而消除任何现有会话。

例如:

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

编辑:您没有遇到池大小为1的问题,因为您只有一个进程正在运行。如果您重新启动该过程,如果您没有秘密设置,您可能会看到会话丢失。