在Fargate中运行的Node web app在负载和CPU相对免税的情况下崩溃
我们正在5个Fargate容器中运行Koa网络应用。它们是与Mona Atlas一起使用Koa的非常简单的原始/ REST API。我们开始进行容量测试,并注意到节点服务器开始显着降低速度,因为CPU(坐定为30%),内存(坐定为20%或低于20%)和Mongo(仍在<10ms内返回)留有足够的空间。 。为了进一步测试这一点,我们删除了Mongo操作,并重新敲定了健康检查端点。我们确实看到了很多吞吐量,但是在25%的CPU上发生了显着的降级,而在40%的CPU上Node实际上崩溃了。
我们的Fargate任务(容器)是CPU:2048(2个“虚拟CPU”)和4096(内存)(4个演出)。我们将ulimit nofile提升到64000,还将max-old-space-size设置为3.5 GB。这并没有造成显着差异。
我们在负载均衡器中也没有看到明显的延迟。
我的期望是在系统开始出现问题之前,CPU或内存将攀升得多。有什么想法可能存在瓶颈吗?
我们正在5个Fargate容器中运行Koa网络应用。它们是与Mona Atlas一起使用Koa的非常简单的原始/ REST API。我们开始进行容量测试,并注意到节点服务器...
回答如下:这里的主要问题是我们正在运行带有2个CPU的容器。由于Node仅有效使用1个CPU,因此总是有一定数量的CPU分配从未使用过。辅助开销从未使容器达到100%。因此,节点在其1个cpu上将不堪重负,而另一个节点基本上处于空闲状态。这导致我们的自动缩放警报永远不会触发。因此,将其调整为1个cpu容器,并具有更多水平扩展(即更多实例)。
在Fargate中运行的Node web app在负载和CPU相对免税的情况下崩溃
我们正在5个Fargate容器中运行Koa网络应用。它们是与Mona Atlas一起使用Koa的非常简单的原始/ REST API。我们开始进行容量测试,并注意到节点服务器开始显着降低速度,因为CPU(坐定为30%),内存(坐定为20%或低于20%)和Mongo(仍在<10ms内返回)留有足够的空间。 。为了进一步测试这一点,我们删除了Mongo操作,并重新敲定了健康检查端点。我们确实看到了很多吞吐量,但是在25%的CPU上发生了显着的降级,而在40%的CPU上Node实际上崩溃了。
我们的Fargate任务(容器)是CPU:2048(2个“虚拟CPU”)和4096(内存)(4个演出)。我们将ulimit nofile提升到64000,还将max-old-space-size设置为3.5 GB。这并没有造成显着差异。
我们在负载均衡器中也没有看到明显的延迟。
我的期望是在系统开始出现问题之前,CPU或内存将攀升得多。有什么想法可能存在瓶颈吗?
我们正在5个Fargate容器中运行Koa网络应用。它们是与Mona Atlas一起使用Koa的非常简单的原始/ REST API。我们开始进行容量测试,并注意到节点服务器...
回答如下:这里的主要问题是我们正在运行带有2个CPU的容器。由于Node仅有效使用1个CPU,因此总是有一定数量的CPU分配从未使用过。辅助开销从未使容器达到100%。因此,节点在其1个cpu上将不堪重负,而另一个节点基本上处于空闲状态。这导致我们的自动缩放警报永远不会触发。因此,将其调整为1个cpu容器,并具有更多水平扩展(即更多实例)。