最近我遇到了Docker Stack和Docker Swarm严重的性能问题。
首先是一个小背景:我已经构建了一个充当网络爬虫的应用程序。它从数据库中读取一个域列表,允许用户选择一个列表进行处理,并在后台处理服务中访问每个网站以查找某些内容。
目前,我已将此应用程序部署在运行Windows 10主机和Docker for Windows的计算机上。我用Docker Compose运行应用程序,它运行得很好。性能非常好,因为每分钟访问的域数非常合理。
现在,我已经尝试在Swarm中运行它以提高性能。我在网络中有另一台计算机,也运行Windows 10.我在那里安装了Docker。
之后我在两台计算机上设置了docker-machine,使用hyperv
驱动程序在每台计算机中创建一个Docker Machine。
我在运行当前版本应用的计算机中访问了docker机器,并在那里初始化了一个群。我添加了另一个docker机器,位于另一台计算机中作为工作节点。
之后我只编辑了我的compose文件,配置了" deploy"选项,在每个docker机器内预先构建图像,并将swarm部署到运行当前应用程序的计算机上的manager节点。
该应用在群中工作。唯一的问题是性能。它非常可怕非常可怕。有了一个想法,使用Docker运行应用程序与使用Docker for Windows的后台工作程序的3个副本组合,每分钟访问50页。
在群中运行,经理上有3个背景工作者副本,工作人员有3个副本,每台计算机上使用泊坞机,每分钟访问的页面数量变为3个。
我不知道自己做错了什么。 Docker for Windows也可以在Hyper V虚拟机上运行,因此不是问题。我甚至将两台泊坞机的RAM设置为2048mb,就像Moby VM一样,但它没有用。
为什么我搬到Swarm时会有如此大的性能下降?我想象性能将保持不变或增加很多,因为有更多的计算机执行任务。我可能在这里缺少什么?
如果需要任何其他信息,请通知我,我将编辑问题。