xinet 与 iptables 的端口转发性能对比

xinet 与 iptables 的端口转发性能对比

我需要在端口 80 上运行基于 Java 的 Web 服务器。选项包括:

  • Web 代理(apache、nginx、haproxy 等)
  • 西奈特
  • iptables
  • 设置用户标识

基准是使用 setuid 运行应用程序,但出于安全原因,我宁愿不这样做。Apache 太慢,nginx 不支持保持活动,因此每个代理请求都会建立新的连接。

xinet 很容易设置,但会为每个请求创建一个新进程,我发现这会在高性能环境中引起问题。

最后一个选项是使用 iptables 进行端口转发,但我不知道它有多快。

当然,理想的解决方案是在专用的硬件防火墙/负载平衡器上执行此操作,但目前这不是一个选择。

目前,所有设置都在同一个盒子上,这就是 iptables 应该可以工作的原因。

负载如下,每秒大约有 2500 个非常短暂的 http 请求,这些请求的最大延迟时间为 50 毫秒……也就是说,应用程序至少需要 25 毫秒才能返回响应。

答案1

您能描述一下您的设置吗?我不太明白是否所有内容都位于一台服务器上,或者您是否有单独的网关和 Web 服务器。

但是,HAproxy 确实如此。最适合平衡多个 Web 服务器。我用它来平衡 http 和 smtp。

答案2

iptables 在内核中工作,这意味着它比委托给用户空间代理要快得多。

答案3

也许还有其他选择或者哈普罗西

答案4

我不能 100% 地确定 iptables 的性能是否比其他解决方案更快。iptables 链中的任何规则都将与所有流量进行匹配,而用户空间代理将仅在新连接时触发。

我的建议:进行测试并进行基准测试。

相关内容