Tag: 高性能

为什么使用Docker Stack比Docker Compose还要糟糕?

最近我遇到了Docker Stack和Docker Swarm的相当严重的性能问题。 所以首先有一点背景:我已经构build了一个作为web爬虫的应用程序。 它从数据库中读取一个域列表,允许用户select一个列表进行处理,在后台处理服务中访问每个网站寻找一些内容。 目前,我已经将这个应用程序部署在运行Windows 10主机和Docker for Windows的计算机上。 我使用Docker Compose运行应用程序,运行得相当好。 性能相当不错,因为每分钟访问的域数是相当合理的。 现在,我试图在Swarm中运行这个来提高性能。 我在networking中有另一台计算机,也运行Windows 10.我在那里安装了Docker。 之后,我在两台计算机中build立了hyperv -machine,使用hyperv驱动程序在每台计算机上创build一个Docker Machine。 我在运行当前版本的应用程序的计算机上访问Docker机器,并在那里初始化一个群集。 我添加了另一台Docker机器,位于另一台计算机上作为工作节点。 之后,我编辑了我的configuration文件,configuration了“部署”选项,在运行当前应用程序的计算机上预置了每个Docker计算机中的图像,并将其部署到pipe理器节点。 该应用程序在群体中工作。 唯一的问题是性能。 这真的很可怕。 有一个想法,使用Docker运行应用程序与使用Docker for Windows的3个副本的后台工作人员,每分钟访问50页。 在群中运行,在pipe理器上有3个副本,在工作者上有3个副本,在每台计算机上使用Docker机器,每分钟访问的页面数量变成3。 我不明白我做错了什么。 Docker for Windows也运行在Hyper V虚拟机上,所以这不是问题。 我甚至将Docker机器的内存设置为2048mb,就像Moby虚拟机一样,但是没有成功。 为什么我在移动Swarm的时候性能下降很大? 我猜想性能会保持不变或增加很多,因为有更多的计算机执行任务。 我可能在这里错过了什么? 如果需要其他信息,请告诉我,我将编辑该问题。

监视docker中的内存使用情况

我按顺序运行了1000个docker集装箱。 每个容器实例运行一个特定的工作。 在作业执行后,我终止容器以释放资源并在另一个实例中运行另一个作业等等。 我想获得每个容器的内存使用情况。 每个容器的一个值表示平均内存使用量。 这怎么可能? 可能与普罗米修斯,但我不知道如何使用它

Docker会给RAM多余的里程吗?

根据 | 到 | 无数 | Docker通过跨容器共享系统资源来提供超轻量级的虚拟化,而不是为每个容器分配这些资源的副本。 我甚至读过那些吹嘘自己可以“ 在同一个虚拟机上运行几十个,甚至几百个容器”的文章。 但是,如果我的应用程序需要2GB的RAM运行,而底层的物理机器只有8GB的内存,我通常只能运行我的应用程序的3个实例(留下~2GB的系统内存,实用程序等) 。 Docker是否会用RAM做一些神奇的事情,让我真的可以运行几十个容器,每个容器都分配了2GB的内存,但不知何故在底层共享了未使用的内存? 还是那些声明比其他任何媒体炒作都要多?

Docker卷的性能下降

我正在使用fio运行一些性能基准testing,以比较Docker卷(使用-v选项创build)的性能与主机上安装的卷的性能。 我正在使用以下命令在这两个卷上运行IO: fio –name = seqwrite –ioengine = libaio –iodepth = 1 –rw = write –bs = 8M –direct = 1 –size = 1024M –numjobs = 24 –runtime = 300 –group_reporting 对于主机安装的卷,我正在使用使用ext4格式化的单个SATA驱动器(2TB)。 Docker卷的吞吐量大约是60MB / s,而主机安装的卷是125-130 MB / s。 另外,当我绑定在Docker容器内安装相同的主机卷时,我得到相同的125-130 MB / s吞吐量。 在使用“-v”选项创buildDocker卷时是否存在已知的性能下降问题,或者在testing方法和比较性能方面有什么不正确的地方?

Docker没有得到100%的CPU

我们只写了一个CPU密集型应用程序来testingDocker镜像。 这是一个Java应用程序,接近Pi的小数。 如果我们运行java -jar superpi.jar它会强调所有内核,并需要30秒 如果我们运行docker run fewlaps/superpi它只会强调四个内核中的两个,需要70秒 Docker镜像像在主机上运行一样运行.jar。 为什么Docker镜像不如在本地运行.jar那么快? 我们预计在本地运行它并在Docker上运行它有一些区别,但是这个过程需要两倍的时间。 有什么办法可以请求Docker使用所有的CPU? 顺便说一下,这个项目在GitHub上发布: Fewlaps / SuperPI

运行多个Docker虚拟机的服务器如何处理TCP限制?

在真正的负载下,服务器似乎没有足够快地“回收”TCP连接。 我正在考虑使用Docker来处理每秒比API更高的请求数量,通过在一台机器上创build多个节点服务器的实例来使用多台机器。 如果设置了以下sysctl设置,回收似乎会发生得更快,但是对于存在多less个套接字仍然有一个严格的限制: net.ipv4.ip_local_port_range='1024 65000' net.ipv4.tcp_tw_reuse='1' net.ipv4.tcp_fin_timeout='15 当运行多个docker实例时,tcp连接上的总上限是否等于“父”机器可以处理的最大tcp连接的数量?

为什么容器networking吞吐量低

我使用Docker创build了两个容器,并通过Netperf来测量networking性能。 然而吞吐量结果很低,约为563.81 Mb / s。 不是通过主存储器完成的2个容器/过程之间的通信? 有没有人有一个想法,为什么我有这么低的吞吐量。 我需要一个特定的configuration吗? 谢谢,Genc