Docker swarm – docker.sock减速

我有一个docker群,我部署了3个我的微服务的副本。 微服务的工作是让客户端下载文件。 我目前正在testing大小高达3GB的大文件和多个并行下载。 我在17.06.1-ce

  • 我的微服务在我的服务里面装有“docker.sock”。 这是我的mac-docker-vm上的相同的套接字

  • 我有一个bash脚本,无论我在微服务或Mac上执行它,应该给我相同的输出(因为相同的套接字被安装在容器内)。 输出是3个IP地址。 脚本基本上只是运行“docker检查获取IP地址”。 这很好。 bash脚本使用docker命令,我认为它在内部使用docker.sock来处理这些命令。

问题描述

  • 当我使我的微服务繁忙(我有不止一个正在运行的服务的副本),stream传输巨大的数据stream,说3个3GB的文件stream,docker袜子放慢我想。 我觉得这是因为当我发送一个下载stream请求,它命中REST控制器,控制器执行bash脚本,并坐在那里等待脚本完成。 为了validation我的理论,脚本是瓶颈,而不是“斯卡拉”,“过程”类,而这个瓶颈发生时,我执行我的笔记本电脑相同的bash脚本。 在stream媒体正在进行的过程中,脚本等待了一分多秒。 请记住,无论是从我的笔记本电脑执行脚本,还是从我的Scala代码(在微服务中)执行该脚本,都是使用相同的套接字(因为挂载了相同的docker.sock)
  • 我如何进一步debugging,以确保我的理论是正确的,并绕过它? 我知道这是我写的代码库,以支持下载文件,但我可能会离开资源打开,使套接字行为不好? 我没有在CentOS Docker上testing过。 不知道Mac上的行为是否会保持不变