我有一些上游的 flask 容器和CPU使用率达到100%,当我接受一些请求。系统显示,容器使用您的CPU 100%。
我的问题是:
1.如果我限制这些容器上的CPU使用量,如果它们命中分配的资源,它们会以零错误退出吗?或者限制Docker容器的资源有什么缺点?
1.哪一种方法在分配资源给docker容器方面更好?(对于6个cpu核心)
a)两个使用默认设置运行的容器。(使用内核可以提供的尽可能多的资源)
B)4个容器只能使用1个CPU(--limit cpus ='1')
请让我知道如果你想让我更详细。
Thanks in Advance
1条答案
按热度按时间nbnkbykc1#
1.容器(和其他Linux进程)如果试图使用比分配给它们的CPU周期更多的CPU周期,就会被限制:Linux内核会调度其他进程。超过CPU限制不会有任何不良后果,只是会让进程运行得更慢。
例如,假设你的程序启动了4个线程,每个线程都使用一个完整的核心运行一些密集的计算,但是你在一个带有
--cpus=2
的Docker容器中运行这个线程。所有四个线程都会运行,但是组合后的程序将被限制在200%的CPU,整体性能将与你只启动了2个线程的情况相似。1.如果你没有明确限制CPU使用率,你通常会获得更好的整体系统利用率。如果你运行4个容器,其中一个正在运行上述的4线程计算作业,而其他三个处于空闲状态,如果你没有限制,你将充分利用可用的系统资源。
如果你有一个特定的计算密集型容器,你可能需要限制它的CPU利用率,以免耗尽其他进程。如果你只有一个worker容器和三个Web服务器容器,考虑在一个4核系统上将worker限制为3个或3.5个CPU,以保证HTTP流量有一些空闲周期。这是一个调优优化,所以只有当你发现问题时才考虑它。
注意CPU和内存的工作方式不同。你不能真的使用“太多”的CPU,因为如果你等待,总会有更多的CPU周期,但是内核会分配你的进程能够运行的时间。另一方面,内存是固定的,如果你的进程超过内存限制,它就会被杀死。