Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何在amazon EC2 T2.micro实例上增加每秒的请求?_Performance_Amazon Ec2_Performance Testing_Load Testing - Fatal编程技术网

Performance 如何在amazon EC2 T2.micro实例上增加每秒的请求?

Performance 如何在amazon EC2 T2.micro实例上增加每秒的请求?,performance,amazon-ec2,performance-testing,load-testing,Performance,Amazon Ec2,Performance Testing,Load Testing,我最近吃了一个AmazonEC2实例,T2.micro。在安装了Wildfly 8.2.0Final之后,我尝试对web服务器进行负载测试。我测试了服务器,以提供小于500字节大小的静态页面和写入和读取mysql的动态页面。令我惊讶的是,我得到了相似的结果,两次测试都得到了大约1000转的结果。我用top-D1监控系统,CPU还没有达到最大值,还有可用内存。我认为EC2对并发连接有一些限制,或者我的设置需要改进 我的设置是CentOS 7,WileFly/Jboss 8.2.0最终版本,Mari

我最近吃了一个AmazonEC2实例,T2.micro。在安装了Wildfly 8.2.0Final之后,我尝试对web服务器进行负载测试。我测试了服务器,以提供小于500字节大小的静态页面和写入和读取mysql的动态页面。令我惊讶的是,我得到了相似的结果,两次测试都得到了大约1000转的结果。我用top-D1监控系统,CPU还没有达到最大值,还有可用内存。我认为EC2对并发连接有一些限制,或者我的设置需要改进

我的设置是CentOS 7,WileFly/Jboss 8.2.0最终版本,MariaDb 5.5。测试工具是分布式模式或命令行模式下的jmeter。测试在远程、同一子网和本地主机上执行。结果都一样


你能帮我找出瓶颈在哪里吗。AmazonEC2实例上是否存在任何可能影响这一点的限制?谢谢。

是的,EC2实例类型有一些限制,其中之一是网络性能

Amazon没有公布每种类型实例的确切限制,但在中您可以看到
t2.micro
具有低到中等的网络性能。如果需要更好的网络性能,可以在页面上查看哪些实例增强了网络:

增强型网络 增强的网络使您能够获得更高的每秒数据包(PPS)性能、更低的网络抖动和更低的延迟。此功能使用新的网络虚拟化堆栈,与传统实现相比,它提供了更高的I/O性能和更低的CPU利用率。为了利用增强的网络,您应该在VPC中启动一个HVM AMI,并安装适当的驱动程序。增强型网络目前在C4、C3、R3、I2、M4和D2实例中受支持。有关如何在EC2实例上启用增强网络的说明,请参阅Linux上的增强网络和Windows上的增强网络教程。要了解有关此功能的更多信息,请查看增强型网络常见问题部分

您在这些SO和SF问题中有更多信息:


你说得对,Wildfly的1000转/秒感觉非常低,因为为它供电的海底服务器是最快的10个周期之一

优化的起点: 确保您没有请求登录(这可能导致I/O瓶颈),使用最新的稳定JVM,并且可能值得使用您的应用程序使用的最新Wildfly版本

这样做之后,您几乎肯定会被连接创建而不是AWS实例所束缚。这可以在JMeter中,也可以在Wildfly子系统中

要消除JMeter的罪魁祸首,请在相同的并发级别上尝试ApacheBenchmark(“ab”),然后在启用-k选项的情况下尝试(以允许连接重用)

  • 如果第一个ApacheBenchmark数字远高于JMeter,那么问题在于JMeter使用的基于线程的网络模型(可能需要另一个负载测试工具,如gatling或Ocust.io)
  • 如果第二个数字远高于第一个数字,那么瓶颈就是连接创建。可通过调整底拖服务器设置来解决此问题
就WildFly而言,我必须查看config.xml,但是您可以通过调整设置来提高性能。默认值通常是固定的,但您需要非常少的I/O线程数(1个或CPU数,不要更多)

我看到一个微不足道的Wildfly 10应用程序远远超过了您在t2.micro实例上看到的性能


使用Wildfly 10+docker+Java 8的基准测试结果: 服务器设置(EC2 t2.micro运行最新的amazon linux,在US-east-1中,不同的AZs)

客户(另一个t2.micro、最小负载、不同AZ):

16个具有keep alive的并发连接,为500字节的缓存随机预生成的数据提供服务

多次运行的结果: 每秒430个请求(RPS)、1171个RPS、1527个RPS、1686个RPS、1977个RPS、2471个RPS、3339个RPS,在几十万个请求之后,最终达到峰值~6500个RPS

注意到它是如何随时间上升的吗?在基准测试之前对服务器进行预热、允许创建足够的处理程序线程以及允许JIT编译,这一点很重要。10000个请求是一个很好的起点

如果我关闭连接保持激活?峰值约为1450转/秒,并发度为16。但请稍候!对于单线程(并发1),它只提供约340-350 RPM。将并发性增加到16以上并不能提供更高的性能,但它仍然相当稳定(甚至最多512个并发连接)

如果我使用http://$SERVER\u PRIVATE\u IP:8080/rest/cached/2000将请求数据大小增加到2000字节,那么它仍然会达到1367 rpm,这表明几乎所有的时间都花在连接处理上

对于非常大(300k)的请求和保持有效的连接,我在主机之间达到了大约50MB/s,但在最佳情况下,我看到了高达90MB/s的速度


我想说,JBoss/Wildfly的性能令人印象深刻。请注意,如果主机之间存在更多延迟,则可能需要更高的并发性,以考虑往返时间对连接创建的影响。

请注意,如果在某一时间段内以完全利用率运行T2实例,则会限制其CPU。由于这种不可预测性,我不建议将其用于任何类型的负载或压力测试。更多信息在这里-谢谢。非常有用的信息。我知道T2是为小网站,偶尔有高峰访问。根据链接信息,T2.micro每天可以有大约2小时的完整cpu访问时间,还不错。在那之后,节流的10%对于一个小型网站应该是可行的。我不能
sudo yum install docker
sudo service docker start
sudo docker run --rm -it -p 8080:8080 svanoort/jboss-demo-app:0.7-lomem
ab -c 16 -k -n 1000 http://$SERVER_PRIVATE_IP:8080/rest/cached/500