我在Amazon AWS上有一个服务器架构,如下所示: 一个带有m1.large配置和的EC2实例 db.m3.medium配置的一个RDS实例。 EC2包含一个API,用于管理请求,从RDS数据库获取数据并将其返回给用户。
我已经使用jmeter进行了一些性能测试,我看到发送500个请求/秒的服务器最大响应时间是10秒/请求,最小值是130毫秒,平均约4秒。 AWS中的指标显示EC2处理器仅使用4%,RDS处理器使用率为20%。不幸的是,在EC2中,AWS不提供内存监控,但在RDS中,可用内存从不低于2.6 Gb。
因此,如果服务器无法满负荷运行,那么为什么响应时间如此之大会导致500 req /秒?还有其他我想念的东西吗?
非常感谢你!
答案 0 :(得分:1)
监控,分析,测试和增量改进是要走的路,让我分享一些资源:
要进行内存监控,您可以安装适用于EC2的Cloudwatch Monitring脚本。这可以将内存,磁盘和交换监控添加为自定义指标。
请参阅:http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html
对于分析工具,有很多。如果您正在运行Linux,Brendan Gregg的谈话和书籍对他们来说是非常好的介绍:
请参阅:http://www.joyent.com/blog/linux-performance-analysis-and-tools-brendan-gregg-s-talk-at-scale-11x
另外,请注意,不同的实例类型可能具有非常不同的网络IO性能,请尝试运行比较不同实例类型的测试。具体而言,检查支持SR-IOV的C3,R3 e I2系列。