我想知道容器中的haproxy性能。为了简单起见,如果我有一个运行haproxy的虚拟机,使用这个cpu配置,我知道会发生什么:
nbproc 1
nbthread 8
cpu-map auto:1/1-8 0-7
如果我想为了测试目的而将(整个)配置移植到docker上,而不需要任何花哨的群集魔法,或者只是安装docker,这样我就可以理解事情是如何映射的,我可以想象cpu配置变得更简单,并且haproxy实例意味着可以扩展。我想我有两个问题:
你会在haproxy docker容器中配置cpu吗?或者你会在服务后面扩展容器吗?也许你两者都需要。
单个容器是否可以使用上述配置,就像它作为守护进程在系统上运行一样?docker / containerd会关心这个配置吗?
我知道有4个容器,每个容器都有自己的配置,cpu均匀地映射,这样做不会有规模,也没有任何意义:
nbproc 1
nbthread 2
cpu-map auto:1/1-2 0-1
nbproc 1
nbthread 2
cpu-map auto:1/3-4 2-3
nbproc 1
nbthread 2
cpu-map auto:1/5-6 4-5
nbproc 1
nbthread 2
cpu-map auto:1/7-8 6-7
但我想知道的是这种饱和度。haproxy / docker是如何处理这种cpu细微差别的呢?
发布于 2021-02-16 19:04:25
我已经确认,使用haproxy提供的镜像在容器d下运行haproxy与在systemd下运行对服务的影响很小,甚至没有明显影响。在一个容器-d
上运行--network host
,没有对处理器和内存的限制,在最坏的情况下,我已经看到web外部延迟有2-3%的影响,实时流量的峰值约为50-60MB/秒,这本身取决于吞吐量和请求类型。在具有4 4GB内存(主机cpu为至强6130 Gold)和gig接口的8核vm上,内存利用率几乎相同。cpu性能也保持稳定,利用率有3-5%的潜在增长。这些测试是私有的和未发布的。
就cpu配置而言
nbproc 1
nbthread 8
cpu-map auto:1/1-8 0-7
master-worker
此配置在containerd和systemd之间1:1映射,并生成前面提到的结果。proc和线程将在containerd下启动,并按照您的预期运行。这约占总cpu的80-90% (800%),这代表峰值时不到1个满载的核心。所以这个容器在理论上可以用这种配置再扩展8倍,5到6倍以留出一些净空。
还要注意,这些性能数据中的任何波动都可能是由于我的环境造成的。这些测试是从一个跨越多个站点的真实环境中进行的,而不是一个我可以控制所有方面的试验台。还要注意,根据主机cpu和负载的不同,结果会有很大的不同。
https://stackoverflow.com/questions/65812155
复制相似问题