我遇到了在Docker容器中运行的数据库进程的性能问题。
我们针对Sybase数据库运行集成测试。 我们希望集成测试每次都从新的数据库开始。
根据Docker文档,其架构设计会降低性能:
“写入容器的可写层需要存储驱动程序 管理文件系统。存储驱动程序提供了一个联合 文件系统,使用Linux内核。这种额外的抽象减少了 与使用数据量(直接写入数据量)相比 主机文件系统。”
https://docs.docker.com/storage/
我尝试遵循Docker文档的建议:
停止将数据库文件压缩为Docker映像。
将创建的容器映射到保存数据库文件的主机目录。
结果:映射数据库文件根本没有帮助提高性能。
是否可以提高性能?
请提供说明。
测试计划:
在测试过程中未更改Dockerfile 它是从 FROM microsoft / windowsservercore
Docker容器
Powershell脚本在容器内部启动数据库进程
Docker run –p 2638:2638 –name dp sybase12
在测试过程中仅更改了数据库文件的位置
A)将文件压缩到图像中(测试2)。
B)该文件已映射到Docker容器(测试3)。
在开始新测试之前,我删除了容器。
测试:
在OS中启动数据库进程。
运行集成测试。时间: 18分钟
创建了Docker容器。数据库文件已压缩到
Docker映像。启动的docker:Docker run –p 2638:2638 –name dp sybase12
运行集成测试。时间: 58分钟
创建了Docker容器。数据库文件位于主机文件系统中:C:\ Data。启动的docker:
Docker run –p 2638:2638 –v C:\Data:C:\Deploy\Db –name dp sybase12
运行集成测试。时间: 58分钟
环境
Windows 10 x64
Sybase 12 64位数据库引擎