Ubuntu的HTTP延迟陷入奇怪的分位数

我有一个Ubuntu 10.10服务器有大量的RAM,带宽和CPU。 在服务Apache和nginx的静态文件时,我看到一个奇怪的,可重复的延迟分布模式。 由于这个问题对于两个http服务器来说都是常见的,所以我想知道我的Ubuntunetworkingconfiguration或caching参数configuration是否错误或调整不当。

ab -n 1000 -c 4 http://apache-host/static-file.jpg

 Percentage of the requests served within a certain time (ms) 50% 5 66% 3007 75% 3009 80% 3011 90% 9021 95% 9032 98% 21068 99% 45105 100% 45105 (longest request) 

ab -n 1000 -c 4 http://nginx-host/static-file.jpg

 Percentage of the requests served within a certain time (ms) 50% 19 66% 19 75% 3011 80% 3017 90% 9021 95% 12026 98% 12028 99% 18063 100% 18063 (longest request) 

结果一贯遵循这种模式 – 50%或更多的请求服务于预期,其余的则落入分散的频带,最慢的几个数量级减慢。

Apache是​​2.x并安装了mod_php。 nginx是1.0.x,并且已经安装了Passenger(但是两个应用服务器都不应该在静态文件的关键path中)。 每次testing运行时,平均负载为1(服务器有12个物理内核)。 5GB免费RAM,7GBcaching交换。 testing从本地主机运行。

这里是我从Ubuntu服务器10.10默认的configuration更改:

 /etc/sysctl.conf: net.core.rmem_default = 65536 net.core.wmem_default = 65536 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_mem = 16777216 16777216 16777216 net.ipv4.tcp_window_scaling = 1 net.ipv4.route.flush = 1 net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1 net.core.somaxconn = 8192 /etc/security/limits.conf: * hard nofile 65535 * soft nofile 65535 root hard nofile 65535 root soft nofile 65535 other config: ifconfig eth0 txqueuelen 1000 

请让我知道,如果这种问题响起任何响铃,或者如果更多的configuration信息将有所帮助。 谢谢你的时间。

更新:这是我看到后增加net.netfilter.nf_conntrack_max如下所示:

 Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 2 80% 2 90% 3 95% 3 98% 3 99% 3 100% 5 (longest request) 

closures你的评论,这是nf_conntrack完整的问题,你可以增加conntrak表:

sysctl -w net.netfilter.nf_conntrack_max=131072

或者,如果您已经位于防火墙之后,则可以从连接跟踪中免除HTTPstream量:

 # iptables -L -t raw Chain PREROUTING (policy ACCEPT) target prot opt source destination NOTRACK tcp -- anywhere anywhere tcp dpt:www NOTRACK tcp -- anywhere anywhere tcp spt:www Chain OUTPUT (policy ACCEPT) target prot opt source destination NOTRACK tcp -- anywhere anywhere tcp spt:www NOTRACK tcp -- anywhere anywhere tcp dpt:www