我有一个带有Oracle数据库的Docker镜像,我需要处理大约500万行。
我的机器运行Windows 7,我在运行Ubuntu的Virtualbox VM中使用Docker。 VM配置有2 GB RAM和4个逻辑核心。数据库在VM上的Docker容器内运行,我的应用程序的客户端在主机Windows计算机上运行。在这种情况下,应用程序运行并处理 230秒中的所有内容。
第二种情况是在同一台主机上,但我使用Boot2docker代替Ubuntu VM。我还将Boot2docker VM配置为使用2 GB RAM和4个逻辑内核。使用与以前相同的Docker镜像,我从Boot2docker中的容器启动数据库,并使用Windows运行客户端。但是,这次测试需要 1840秒而不是230。
这些测试是可重复的,并且变化不超过5%。
除CPU和内存外,网络配置相同(一个适配器作为NAT,一个作为主机),存储配置相同并在主机上使用相同的磁盘,容器不使用共享主机上的文件夹,我知道这可能会导致Virtualbox出现性能问题。
我也尝试使用Debian VM进行测试,其性能与Ubuntu相同。
我很困惑为什么会这样。硬件是相同的,Ubuntu和Boot2docker都使用完全相同的配置在VirtualBox VM中运行,但Ubuntu比Boot2docker快8倍。知道为什么吗?
答案 0 :(得分:3)
我发现了问题。安装Boot2docker时,将使用适配器类型Paravirtualized Network创建仅主机网络。我将它改为PCnet-FAST III,速度更快。