我们有一个为用户集成 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 配置。