【问题标题】:Show server busy only for requests without cookie仅对没有 cookie 的请求显示服务器繁忙
【发布时间】:2016-10-04 16:58:32
【问题描述】:

我的网站经常因来自数千个客户的多个请求而超载。我无法扩展到无限大的服务器,并且当前状态的应用程序无法处理流量。为了更好的舒适,我想首先让开始交易的客户完成它,然后让其他客户开始交易。我正在寻找一种解决方案,如何将 HTTP 请求分为两组:能够完成事务的第一个请求和应该接收 503 服务器繁忙网页的其他请求。

我可以同时处理一些交易。我想在服务器繁忙的网页上保留一段时间的其余交易。我认为我可以为此使用清漆。但我无法在 VCL 中为此想出正确的条件。

我想在 varnish 中找到当前与后端的连接数。如果当前连接数将高于某个值(例如 100)并且请求没有会话 cookie,则响应将为 503 服务器忙。如果连接数甚至大于 100,但会话 cookie 存在,请求将被传递到后端。

清漆 VCL 中的 AFAIK 我只能获得应该为真/假的后端(导演)的健康状况。但是当后端被认为不健康时,请求不会传递给它。当我对后端使用 max_connections 时,所有达到限制的连接都会出现 503 错误。

有没有办法使用 varnish、ngingx、apache 或任何其他工具来实现这种行为?

【问题讨论】:

    标签: nginx apache2 varnish vcl http-status-code-503


    【解决方案1】:

    无论如何,您的内容都必须是动态的吗?我运行一个每天处理 3 到 400 万个唯一用户的网站,并使用宽限模式等功能来处理失效。

    也许另一个选项是 ESI,Edge Side Includes,它可以通过缓存非动态的所有内容来帮助减少负载。

    【讨论】:

    • 这是一个售票网站 - 短时间内并发请求很多。应用程序逻辑主要写在 SQL 过程中。是的,有些部分应该被缓存,但是当用户选择他的座位时,交易应该尽可能顺利。基础设施和应用程序只能顺利处理数百个(可能是 1000 个)并发请求,因此我正在寻找一个解决方案,如何在 503 服务器繁忙页面的情况下暂时保留一些客户端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多