启动许多Docker容器时性能下降

我构build了一个Web应用程序,为初学者提供了一个基于Web的编程环境。 用户代码在Docker容器中执行。 该应用程序基于Rails,并使用docker-api gem来访问Docker的Remote API 。

虽然Docker应该提供一个相当可扩展的平台来并行执行许多用户的代码,但是当使用JMeter加载应用程序时,响应时间将会一帆风顺。

CPU和内存都不是瓶颈。 使用New Relic,我可以看到与Docker的socket的通信占用了特定控制器方法( 链接 )的99%的时间。 当我在加载testing期间尝试调用docker ps时,必须等待几秒钟才能返回命令。

使用Docker CLI的实验显示了相同的行为。 所有容器启动后,可以并行执行几个长时间运算。 相比之下,许多短期运行的计算并不是平行的,因为在启动容器时似乎有问题。

Docker不可能并行启动容器吗?