EC2机器或网络有什么限制吗?

Is there any limitation on EC2 machine or network?

我在 Amazon EC2 上有 2 个实例。一个是t2.micro机器作为web缓存服务器,另一个是性能测试工具

刚开始测试的时候,TPS(transactions per second)大概是3000,但是几分钟后TPS就降到300了。

起初我以为CPU信用余额已经用完了,但足以处理请求。测试时,web cache 最大传出流量为500Mbit/s,CPU使用率为60%,空闲内存绰绰有余。

我找不到任何导致 TPS 下降的原因。 EC2机器或网络有限制吗?

有几个因素可能会限制您的流程。

CPU T2 实例积分

正如您所提到的,T2 instances 使用点数来爆发 CPU。它们是非常强大的机器,但每个实例都限制在一定数量 CPU。 t2.micro 个实例获得了 CPU 的 10%,这意味着它们实际上只有 10% 的时间(在低毫秒分辨率下)获得 CPU 的 100%。

实例以 CPU 积分开始,以便快速启动,当 CPU 的使用速度快于获得积分时,就会消耗这些积分。但是,您说的是信用余额充足,所以这似乎不是原因。

网络带宽

每个Amazon EC2 实例可以使用一定吞吐量的网络带宽。较小的实例具有 'low' 带宽,较大的实例具有更多带宽。没有关于带宽大小的官方声明,但这是来自 Serverfault 的有趣参考:Bandwidth limits for Amazon EC2

磁盘 IOPS

如果您的应用程序对每个事务都使用磁盘访问,并且您的实例使用的是通用 (SSD) 实例类型,那么您的磁盘可能已经消耗了所有可用的突增积分。如果您的磁盘很小,这可能意味着它会 运行 变慢(速度为每 GB 3 IOPS,因此 20GB 磁盘会 运行 60 IOPS)。检查 Amazon CloudWatch VolumeQueueLength metric 以查看 IO 是否过度排队。

其他

速度变慢也可能是由于您的应用程序或缓存系统造成的(例如,运行用于存储数据的可用内存不足)。