【发布时间】: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