2

我知道它运行得很好,所以它可以很好地用于开发,但它不会因为 AuFS 而具有相当糟糕的磁盘和/或网络 IO 性能吗?

4

3 回答 3

7

如果将 Cassandra 数据放在一个卷上,磁盘 I/O 性能将与容器外部完全相同,因为 AUFS 将被完全绕过。

即使您不使用卷,只要您稍后不将commitCassandra 数据转换run为该图像的新图像,性能就会很好。即使你这样做了,性能只会在每个文件的第一次写入期间受到影响;之后,它将是原生的。

您不会看到网络 I/O 性能有任何不同,除非您的容器每秒处理 100s 的 Mb/s 网络流量和/或 1000s 的连接。在这种情况下,您可以使用Pipework等工具将 MAC VLAN 接口甚至本地物理接口分配给您的容器。

于 2013-11-18T19:36:17.797 回答
2

我们实际上是在生产环境中在 Docker 中运行 Cassandra,并且不得不解决很多性能问题。

网络:您应该将其设置为 --net=host 以使用主机网络。否则,您的网络速度将受到重大影响。有关推荐最佳实践的更多信息,请参阅本文

数据量:您应该将数据量暴露给物理主机。如果您在云中操作,请注意您放置数据量的位置可能会限制您的 iops。

JVM:仅仅因为您在容器中运行 Cassandra 并不意味着您可以摆脱对 jvm 的调整。您仍然需要对其进行修改以考虑主机上的系统资源。

集群名称/种子:这些需要配置并且需要从硬编码值更改以使用 sed 查找和替换为环境变量。

最大的收获是,就像任何软件一样,您需要进行一些配置。这不是 100% 的即插即用。

于 2016-04-12T22:55:13.603 回答
0

调查同样的事情,刚刚在slideshare上发现了这个:

“Docker 使用 Linux 以太网网桥进行基本的软件路由。这将提高您的网络吞吐量。(50% 命中)使用主机网络堆栈代替(10% 命中)”

于 2016-04-12T22:40:25.597 回答