Ruby on rails 会话粘性通常会提高Rails应用程序的性能吗?

Ruby on rails 会话粘性通常会提高Rails应用程序的性能吗?,ruby-on-rails,session,amazon-web-services,amazon-elastic-beanstalk,Ruby On Rails,Session,Amazon Web Services,Amazon Elastic Beanstalk,我有一个应用程序在AWS Elastic Beanstalk上运行Rails 4.2.5,带有一个MySQL RDS实例。我的应用程序通常有两个EC2实例在运行,尽管有时它可以扩展到更多。我没有使用Desive进行身份验证 我注意到Beanstalk GUI现在支持在弹性负载平衡器中启用会话粘性: 看起来这通常会提高大多数Rails应用程序的性能,因为如果用户返回同一台机器,应该会有更多的缓存命中 我的问题是:ELB会话粘性通常会提高Rails应用程序的性能吗?如果有的话,使用它的原因是什么?

我有一个应用程序在AWS Elastic Beanstalk上运行Rails 4.2.5,带有一个MySQL RDS实例。我的应用程序通常有两个EC2实例在运行,尽管有时它可以扩展到更多。我没有使用Desive进行身份验证

我注意到Beanstalk GUI现在支持在弹性负载平衡器中启用会话粘性:

看起来这通常会提高大多数Rails应用程序的性能,因为如果用户返回同一台机器,应该会有更多的缓存命中


我的问题是:ELB会话粘性通常会提高Rails应用程序的性能吗?如果有的话,使用它的原因是什么?

我不认为你可以说启用粘性会话通常会提高性能-我会说你的性能有时会更差,或者会保持不变

ELB应该将传入呼叫路由到具有工作能力的服务器,当您启用粘性会话时,给定客户端的呼叫将继续路由回同一服务器,即使该服务器已经处于重载状态。您可能会遇到这样一种情况:在一台服务器上,一整组会话偶然会变得“粘滞”,而另一台服务器的容量过剩

这种可能性有多大取决于用户和应用程序的详细信息(即典型“会话”的持续时间、用户数量等)


有时启用会话粘性有很好的理由,但在我看来,尝试提高性能可能不是其中之一。

我不认为您可以说,一般来说,启用粘性会话可以提高性能-我会说您的性能有时会更差,或者会保持不变

ELB应该将传入呼叫路由到具有工作能力的服务器,当您启用粘性会话时,给定客户端的呼叫将继续路由回同一服务器,即使该服务器已经处于重载状态。您可能会遇到这样一种情况:在一台服务器上,一整组会话偶然会变得“粘滞”,而另一台服务器的容量过剩

这种可能性有多大取决于用户和应用程序的详细信息(即典型“会话”的持续时间、用户数量等)


启用会话粘性有时有很好的理由,但在我看来,提高性能可能不是其中之一。

有趣的一点,谢谢。您可以通过设置合理的自动缩放限制来防止这种情况,因为ELB不会路由到不健康的实例。有趣的一点,谢谢。您可以通过设置合理的自动缩放限制来防止这种情况,因为ELB不会路由到不健康的实例。