限制从 tomcat 到 IIS 的连接-代理?iptables?

限制从 tomcat 到 IIS 的连接-代理?iptables?

我在 tomcat6 上有一个 webapp,它连接到 IIS6.0 上的 M$ PlayReady DRM 实例。当我们使用 ab 对 DRM 服务进行基准测试(使用 25 个并发连接)时,性能最佳,这会产生每秒约 250 个请求,这是 ace。更高的并发连接会导致 TCP/IP 超时和其他较低级别的混乱。但是没有办法控制 tomcat 应用程序如何连接到服务 - 它不是内部管理连接池等,它们都是到服务器的独立 http 连接。理想情况下,我希望有这样一种情况,我们可以让 25 个 http 1.1 连接从 tomcat 永久保持活动状态,并通过这个静态连接池请求许可证,我认为这将获得最佳性能。但这不在代码中,所以我正在寻找一种可能在 Linux 级别模拟它的方法。我可能认为 iptables connlimit 可能能够优雅地处理这些连接,但虽然它可以限制,但它可能仍然会惹恼应用程序。代理呢? nginx(或者可能是 squid)似乎很适合在 tomcat 服务器上运行,并访问 localhost,因为我们可能无论如何都想添加额外的 DRM 服务器以在负载平衡下使用。这是否可以从 tomcat 接收 100 个传入连接,接受所有连接并以更尊重的方式代理 IIS 服务器?还有其他角度吗?

编辑 - 查看 apache 的 mod_proxy,我们已经在该 tomcat 实例前面的 apache 实例上将其用于常规用途,这可能是理想的选择。我可以在 proxy_pass 上设置一个最大值,以仅允许 25 个连接,并永久保持它们处于活动状态。这就是我的答案吗?

非常感谢,

克里斯

答案1

阅读代理通行证在 mod_proxy 文档中。

你走对了路。请参阅控制连接池的参数部分

编辑

根据 doc:mod_proxy:

Apache 永远不会创建超过硬最大值或max与后端服务器的连接。

它还说:

在 Prefork MPM 中,它始终为 1,而在 Worker MPM 中,它由 控制ThreadsPerChild

据我所知,只要你配置了它,它就应该可以正常工作。由于我看不出 -parametermax被忽略的原因,你可能需要配置ttlsmax参数,以便在 ttl 之后关闭多余的连接。

相关内容