xinet vs iptables的端口转发性能

我有要求在端口80上运行基于Java的Web服务器。选项是:

  • Web代理(Apache,Nginx,haproxy等)
  • xinet
  • iptables
  • setuid的

基线将使用setuid运行应用程序,但我不希望出于安全原因。 Apache速度太慢,nginx不支持保持活动,因此每个代理请求都会build立新的连接。

xinet很容易build立,但是对于我在高性能环境中看到的每一个请求都会造成一个新的过程。

最后一个select是使用iptables进行端口转发,但是我没有经验它的速度。

当然,理想的解决scheme是在专用的硬件防火墙/负载均衡器上这样做,但目前这不是一种select。

目前,设置都在同一个盒子,这就是为什么iptables应该工作。

加载如下:大约2500个非常短暂的http请求每秒需要有50毫秒的最大延迟时间…说至less25毫秒的应用程序返回响应。

你能描述你的设置吗? 我不太明白,如果一切都驻留在一台服务器上,或者如果你有一个单独的网关和Web服务器。

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

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

其他选项可能是磅或haproxy

如果iptables的性能比其他解决scheme快,我不会100%。 iptables链中的任何规则都会被重新整理,而用户态代理将在新的连接上被触发。

我的build议:testing和基准testing。