我们在 haproxy 负载均衡器后面有两个最近升级的 Plone 4.3.2 实例,它本身就在 Apache 后面。
我们将每个 Plone 实例限制为使用 haproxy 配置服务两个并发请求。
我们最近遇到了一个问题,客户端快速连续发送 4 个字节范围的 PDF 请求,每个请求需要 6 到 8 分钟才能得到响应。这会将所有可用请求锁定 6 分钟,因此 haproxy 会超时队列中的其他请求。PDF 存储在 Plone 中的一个 ATFile 对象,我认为在我们最近的升级中应该已将其迁移到 blob 存储。
我的问题是我们应该采取哪些措施来防止将来发生类似情况?
我也有兴趣:
- 如何调试为什么负载较轻的服务器上的字节范围请求需要这么长时间才能响应
- plone.app.blob 如何处理字节范围请求
- 是否可以将 Apache 配置为从其缓存而不是后端服务器提供字节范围请求
按照这里的要求,去掉了多余配置的 haproxy.cfg。
global
maxconn 450
spread-checks 3
defaults
log /dev/log local0
mode http
option http-server-close
option abortonclose
option redispatch
option httplog
timeout connect 7s
timeout client 300s
timeout queue 120s
timeout server 300s
listen cms 127.0.0.1:18181
id 3
balance leastconn
option httpchk
http-check send-state
timeout check 10s
acl cms_edit url_dom xxx.xxx.xxx.xxx
acl cms_not_ok nbsrv() lt 2
block if cms_edit cms_not_ok
server cms_instance1 app:18081 check downinter 10s maxconn 2 rise 1 slowstart 300s
server cms_instance2 app:18082 check downinter 10s maxconn 2 rise 1 slowstart 300s