此问题已在AWS论坛上提出,未作任何回复。以下是原始问题
嗨!
我们正在对ELB背后的API实例进行滚动升级,并且在等待连接耗尽完成时会看到令人震惊的很长时间。方案如下:
我们正在运行两个相同的系统,4x c3.large在ELB后面,一个系统用于开发,一个系统用于生产。两个系统之间的唯一区别是生产系统不断提供请求。
当没有流量时,对于所有4个实例,dev系统的滚动升级大约需要3分钟。在生产系统中,这些时间在6到17分钟之间波动。出于原因,我们需要平均每小时进行2次滚动升级,然后滚动升级的17+分钟开始成为问题。
我们所有的API调用都是< 100毫秒所以没有长时间运行的请求应该保持连接耗尽这么长时间。我们一直在改变ELB上的空闲时间和连接耗尽时间的值,没有很好的结果。
当降低连接耗尽超时时,我们看到来自API的502响应,因为它强制断开连接并降低空闲超时似乎没有效果。
总而言之,我们想知道如何减少这些时间。正如我们的要求所有<理论上它应该花费100ms来消耗实例的连接。我们在这里缺少什么吗?
最后一点:我们尝试关闭所有连接耗尽,这似乎比降低连接耗尽时间更好。平均每次测试运行只有1或2个错误,有些运行没有错误。这是因为响应时间如此之快?我们的响应也相对较小,因此TCP响应可能保存在OS输出缓冲区中,因此即使关闭连接耗尽也可以响应?将连接耗尽超时设置为0并关闭后有什么区别?
其他信息:
谢谢!