【问题标题】:Does Session Stickiness generally improve performance in Rails apps?会话粘性通常会提高 Rails 应用程序的性能吗?
【发布时间】: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 会话粘性通常会提高 Rails 应用程序的性能吗?使用它有什么问题(如果有的话)?

【问题讨论】:

    标签: ruby-on-rails session amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    我认为您不能说通常启用粘性会话会提高性能 - 我会说您要么偶尔会遇到更差的性能,要么会保持不变。

    ELB 应该将传入呼叫路由到有工作能力的服务器,当您启用粘性会话时,给定客户端的呼叫将继续被路由回同一服务器,即使该服务器已经很重加载。您冒着这样的风险,即偶然一大堆会话在服务器上变得“粘滞”,而另一台服务器的容量过多。

    这取决于您的用户和应用程序的详细信息(即典型的“会话”将持续多长时间、用户数量等)

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

    【讨论】:

    • 有趣的一点,谢谢。您可以通过设置合理的自动扩展限制来防止这种情况,因为 ELB 不会路由到不健康的实例。
    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 2013-04-12
    • 2014-02-26
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多