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

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

请指教。

Docker本身的开销很小,只是将进程与主机上的其他进程隔离开来。 但是,您可以做很多事情来降低容器的性能:

  1. 在Windows / MacOS中运行它,而只给embedded式虚拟机一小部分内存/ CPU的父操作系统。
  2. 限制容器内的CPU或内存资源。
  3. 在主机上启动大量的容器。 Docker并不神奇,如果每个使用2个ram的Java的10个实例将主机放在容器外面爬行,那么它们在容器内部运行得并不好。
  4. networking并发症。 默认情况下,每个容器都放在隔离的网桥上,IO可能会花费更长的时间。 如果您的DNSconfiguration不正确,您可能会看到失败查找的额外延迟。
  5. 在Docker中,默认情况下不允许直接磁盘访问等裸机需求。 您可以授予对特定设备的访问权限,但应用程序的集装箱版本是故意隔离的。
  6. 卷中的数据可能驻留在效率较低的位置。 默认情况下,它是/ var / lib / docker文件系统,但是你可以很容易地将它指向NFS性能会更差的地方。
  7. 错误configuration的数据库,例如忘记创build一个索引。

总之,容器本身不太可能成为问题,但要确保你正在做一个苹果来比较苹果。

在WinDocks Windows容器中运行SQL Server时,我们看不到任何性能损失。 容器实例与共享主机上的任何SQL Server实例一样执行。