在Docker容器环境中运行Redis有没有其他人看到性能问题?
这是我注意到的...... 设置A:本地机器,传统的Redis安装 设置B:本地计算机,使用规范的Redis图像https://registry.hub.docker.com/_/redis/
我的本地计算机上有一个相同的HTTP服务器,其响应速度与请求/响应周期允许的速度一样快。
观察: - A可以维持B的吞吐量的大约2倍。 - 当您进行基准测试时(从容器内部),B执行与A相同的操作
因此,由于网络问题,这让我相信B比A慢:即在虚拟化环境中运行软件引入的网络中继正在产生重大的性能问题......
只是想知道是否有其他人注意到这样的事情?
答案 0 :(得分:8)
Docker的默认网络选项--net=bridge
引入了由于NAT数据包重写引起的开销,高分组速率会引起注意。
使用--net=host
可以提高网络性能,指示Docker不为容器创建单独的网络堆栈,从而允许完全访问主机网络接口。
虽然应该谨慎使用此选项,因为它允许容器进程像任何其他根进程一样打开低编号端口,并访问D-bus等本地网络服务,这可能导致容器中的进程能够执行意外操作的东西。
简而言之:如果您知道自己在容器内运行的是安全的。如果您怀疑有不良或侵略性的行为 - 请不要这样做。