在 Apache Web 服务器中设置特定请求的优先级

在 Apache Web 服务器中设置特定请求的优先级

我们有一个为用户集成 CometChat 的网站;由于我们的 apache 服务器收到大量聊天服务请求,我们希望为这些请求设置不同的(较低)优先级,同时为其他请求设置更高的优先级。

据我们所知,实现此目的的一种方法是使用 mod_qos,这样我们就可以限制特定路径在一段时间内的请求数(例如每秒请求数)。这并非我们想要的,但可以作为部分解决方案。

我的问题是:有没有更好的解决方案来优先处理请求?如果你建议使用修改服务质量,哪种配置对于 mod_qos 来说比较好,可以实现我所要求的功能?

谢谢

答案1

无法在 Apache Web 服务器中对请求进行优先级排序直接地

也就是说,由于 apache 包含一个完整的开箱即用的代理和负载平衡解决方案,因此需要对其进行大量调整。

您可能应该考虑使用以下方法代理到单独的后端(可以在同一服务器上运行)代理通行证

这会将聊天服务的请求与其他请求分开,然后您可以根据代理来决定每个后端有多少资源可用于回答请求。

完整的解决方案超出了这种格式的范围,但是 mod_proxy 的 apache 文档可以帮助您入门;特别是查看允许您设置优先级和每个后端请求限制的 ProxyPass 选项。

答案2

如果你提供不同的服务,并且 CPU 受限,那么选项有

1)扩大规模(更大的机器,8个CPU核心或更多!)

2)横向扩展 - 一旦达到单台机器的扩展极限,就横向扩展,使用负载平衡解决方案的多台机器 - 提供容错能力作为免费的积极副作用。

需要考虑的事情:

服务分离。在不同的机器或集群上运行聊天和 Web 服务

优化您的平台,使用高效的解决方案。考虑缓存请求/前端代理。

好的,我采纳了你的意见。我认为唯一的其他方法是

运行两个 httpd 实例(一个在 8000(聊天),另一个在 8001(网络))

在端口 80 上运行类似 nginx 的高速反向代理。

将其中一个 httpd 实例设置为较低的优先级。

调整你的 http 配置。

相关内容