使用Docker运行Redis(性能问题)

13

有其他人在Docker容器环境中运行Redis时遇到性能问题吗?

以下是我注意到的... 设置A:本地机器,传统的Redis安装 设置B:本地机器,使用经典的Redis镜像 https://registry.hub.docker.com/_/redis/

我的本地机器上有一个完全相同的HTTP服务器,可以尽可能快地触发请求/响应循环。

观察结果: - A可以维持大约2倍的吞吐量。 - 当您在容器内进行基准测试时,B的性能与A相同。

因此,这让我认为B比A慢是因为网络问题:即通过在虚拟化环境中运行软件引入的网络中继会创建重大的性能问题...

只是想知道是否有其他人注意到这个问题?

1个回答

19

Docker的默认网络选项--net=bridge会因为NAT数据包重写引入开销,高数据包速率下效果显著。

使用--net=host可以提升网络性能,这指示Docker不要为容器创建独立的网络栈,允许对主机网络接口进行完全访问。

但需要小心地使用此选项,因为它允许容器进程像任何其他根进程一样打开低序号端口,并访问本地网络服务如D-bus,这可能导致容器中的进程做出意外行为。

简而言之:如果你知道在容器内运行什么是安全的,如果怀疑存在不想要或激进的行为,则不要使用此选项。


26
@joshula 看起来你的实验花了3年时间。 - Jeyhun Karimov
18
@joshula,看起来你的实验花费了六年时间。 - David Valdivieso
1
我刚刚使用 --net=host 进行了测试,得到了 34K RPS 的结果;没有使用该参数时,结果为 16KRPS。在未使用 Docker 的情况下,本机 Redis 安装的 RPS 为 40k。 - CSharpShooter
6
@joshula 看起来你的实验历时7年。 - Samir Mammadhasanov
3
@joshula 看起来你的实验花了8年时间。 - 0xKayvan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接