slo*_*net 4 linux ubuntu performance performance-tuning conntrack
我有一个 Ubuntu 10.10 服务器,有足够的 RAM、带宽和 CPU。当从 Apache 和 nginx 提供静态文件时,我看到延迟分布中有一种奇怪的、可重复的模式。因为这个问题对两个 http 服务器都很常见,我想知道我是否配置错误或调整不当 Ubuntu 的网络或缓存参数。
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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
结果始终遵循这种模式 - 50% 或更多的请求按预期提供服务,然后其余部分落入离散带,最慢的要慢几个数量级。
Apache 是 2.x 并且安装了 mod_php。nginx 是 1.0.x 并且安装了Passenger(但两个应用服务器都不应该在静态文件的关键路径中)。每次测试运行时,平均负载约为 1(服务器有 12 个物理内核)。5GB 可用内存,7GB 缓存交换。测试是从本地主机运行的。
以下是我对 Ubuntu 服务器 10.10 默认值所做的配置更改:
/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
Run Code Online (Sandbox Code Playgroud)
请让我知道此类问题是否会敲响警钟,或者有关配置的更多信息是否会有所帮助。谢谢你的时间。
更新:这是我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)
Run Code Online (Sandbox Code Playgroud)
离开你的评论说这是nf_conntrack
完整的问题,你可以增加 conntrak 表:
sysctl -w net.netfilter.nf_conntrack_max=131072
或者,如果您已经在防火墙后面,您可以从连接跟踪中免除 HTTP 流量:
# 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
555 次 |
最近记录: |