会话粘性通常会提高 Rails 应用程序的性能吗?
Posted
技术标签:
【中文标题】会话粘性通常会提高 Rails 应用程序的性能吗?【英文标题】:Does Session Stickiness generally improve performance in Rails apps? 【发布时间】:2016-02-24 08:48:32 【问题描述】:我有一个使用 mysql RDS 实例在 AWS Elastic Beanstalk 上运行 Rails 4.2.5 的应用程序。我的应用程序通常运行两个 EC2 实例,但有时它可以扩展到更多。我不使用 Devise 进行身份验证。
我注意到 Beanstalk GUI 现在支持在 Elastic Load Balancer 中启用会话粘性:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.elb.html#using-features.managing.elb.sessions
这似乎通常会提高大多数 Rails 应用程序的性能,因为如果用户返回同一台机器,应该会有更多的缓存命中。
我的问题是:ELB 使用它有什么问题(如果有的话)?
【问题讨论】:
【参考方案1】:我认为您不能说通常启用粘性会话会提高性能 - 我会说您要么偶尔会遇到更差的性能,要么会保持不变。
ELB 应该将传入呼叫路由到有工作能力的服务器,当您启用粘性会话时,给定客户端的呼叫将继续被路由回同一服务器,即使该服务器已经很重加载。您冒着这样的风险,即偶然一大堆会话在服务器上变得“粘滞”,而另一台服务器的容量过多。
这取决于您的用户和应用程序的详细信息(即典型的“会话”将持续多长时间、用户数量等)
启用会话粘性有时有充分的理由,但在我看来,尝试提高性能可能不是其中之一。
【讨论】:
有趣的一点,谢谢。您可以通过设置合理的自动扩展限制来防止这种情况,因为 ELB 不会路由到不健康的实例。以上是关于会话粘性通常会提高 Rails 应用程序的性能吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 AWS Elastic Beanstalk 中使用应用程序控制的会话粘性吗?