在Docker容器中运行数据库的性能问题

5

有没有人注意到在Docker容器中运行数据库(MySQL或Postgres)存在性能问题?我被告知会导致严重的性能下降。

请给予建议。


我在开发中使用容器中的数据库,但在生产中不使用。这将取决于您所拥有的I/O http://mysqlserverteam.com/mysql-with-docker-performance-characteristics/ - Sylwit
2个回答

6
Docker本身开销很小,只是将进程与主机上的其他进程隔离。然而,有很多事情会降低容器的性能:
  1. 在Windows / MacOS中运行容器时,仅为内嵌VM提供父操作系统内存/CPU的一小部分。
  2. 限制容器内的CPU或内存资源。
  3. 在主机上启动大量容器。Docker不是魔法,如果10个使用2个G内存的Java实例使主机停滞,那么它们在容器内不会更好地运行。
  4. 网络复杂性。默认情况下,每个容器都在隔离的网络桥上启动,其中IO可能需要额外的跳数。如果DNS配置不正确,则可能会因未能查找而出现额外的延迟。
  5. 默认情况下,Docker不允许像直接磁盘访问这样的底层要求。您可以授予对特定设备的访问权限,但否则应用程序的容器化版本是有意隔离的。
  6. 存储在卷中的数据可能位于效率较低的位置。默认情况下,它是/var/lib/docker文件系统,但您可以轻松地将其指向NFS挂载点,这样性能甚至会更差。
  7. 数据库配置错误,例如忘记创建索引。
简而言之,容器本身不太可能是问题,但请确保进行苹果对苹果的比较。

-2

在 WinDocks Windows 容器中运行 SQL Server 时,我们没有看到任何性能损失。

容器实例的表现与共享主机上的任何 SQL Server 实例一样。

声明:我是 WinDocks 的联合创始人


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