【发布时间】:2013-11-18 18:58:13
【问题描述】:
我知道它运行得很好,所以它可以很好地用于开发,但它不会因为 AuFS 而导致磁盘和/或网络 IO 性能更差吗?
【问题讨论】:
标签: io cassandra virtualization docker lxc
我知道它运行得很好,所以它可以很好地用于开发,但它不会因为 AuFS 而导致磁盘和/或网络 IO 性能更差吗?
【问题讨论】:
标签: io cassandra virtualization docker lxc
如果将 Cassandra 数据放在卷上,磁盘 I/O 性能将与容器外部完全相同,因为 AUFS 将被完全绕过。
即使您不使用卷,只要您稍后不将 commitCassandra 数据转换为 run 那个图像的新图像,性能就会很好。即使你这样做了,性能只会在每个文件的第一次写入期间受到影响;之后,它将是原生的。
您不会看到网络 I/O 性能有任何不同,除非您的容器每秒处理 100 兆比特/秒的网络流量和/或 1000 秒的连接。在这种情况下,您可以使用Pipework 等工具将 MAC VLAN 接口甚至本地物理接口分配给您的容器。
【讨论】:
我们实际上是在生产环境中的 Docker 中运行 Cassandra,并且不得不解决很多性能问题。
网络:您应该将其设置为 --net=host 以使用主机网络。否则,您的网络速度将受到重大影响。有关推荐最佳实践的更多信息,请参阅this article。
数据量:您应该将数据量暴露给物理主机。如果您在云中操作,请注意您放置数据量的位置可能会限制您的 iops。
JVM:仅仅因为您在容器中运行 Cassandra 并不意味着您可以摆脱对 jvm 的调整。您仍然需要对其进行修改以考虑主机上的系统资源。
集群名称/种子:这些需要配置并且需要从硬编码值更改以使用 sed 查找和替换为环境变量。
最大的收获是,与任何软件一样,您需要进行一些配置。这不是 100% 的即插即用。
【讨论】:
调查同样的事情,刚刚在slideshare 上找到了这个:
“Docker 使用 Linux 以太网桥进行基本的软件路由。这将提高您的网络吞吐量。(命中率 50%) 改用主机网络堆栈(命中率 10%)"
【讨论】: