nginx使用起来比ip_conntrack快很多squid ..为什么?

我正在扩大一个前端代理服务器,直到昨天我使用Squid作为反向代理(即使基本上没有被caching,即Squid只是代理)。 今天,我试着改变nginx,我注意到,我正在更快地打ip_conntrack限制。

作为一个短期的解决方法,我只是提高ip_conntrack限制(按照http://rackerhacker.com/2008/01/24/ip_conntrack-table-full-dropping-packet ),但我想知道这里有人知道为什么nginx是如此快速地触及这些限制,如果能做些什么来纠正它呢? (即更快地从跟踪表中popup连接)。

使用的东西是最新的Centos 5.5盒子,nginx 0.8.53和Squid 2.6。 一切都从RPM(核心或EPEL的)安装。

预先感谢您的任何build议或启发性讨论。

对于我自己的参考,这个其他线程在这个话题上很有用: 确定nginx反向代理负载限制

我找不到与conntrack直接相关的文档,但从Nginx 文档看这个片段:

在反向代理情况下,max_clients变成

max_clients = worker_processes * worker_connections / 4

由于浏览器默认打开2个连接到服务器,nginx使用来自同一个池的fds(文件描述符)连接到上游后端

使用默认浏览器的Nginx行为是从它接收两个连接并打开到后端(反向代理)的两个连接,因此生成4个连接。 这可能是为什么conntrack填充更快的原因。 当然,这只是基于nginx工作者行为的一个半知情的猜测。

对端口80使用ip_conntrack是浪费资源。 将这些数据包标记为NOTRACK并将ip_conntrack用于其他端口。