我对 Amazon EC2 上的传输速率有疑问。基本上,我正在评估迁移到 Amazon 服务堆栈的可能性,但首先想根据我们当前的设置对其进行基准测试。我的设置非常简单,我只运行一个大型 EC2 实例,访问一个小型 RDS 实例,两个实例都位于欧盟西部区域。在 EC2 实例上,我运行的是普通的 apache 配置文件,而在当前服务器上,我运行的是修改后的 apache 配置文件。这意味着我预计并发连接数会更少,但我预计传输速率会相似。
我正在运行的基准测试只是标准的 ab(apache 基准测试)测试
ab-n 100-c 10http://www.example.com/
EC2 上的设置结果如下:
ab -n 100 -c 10 http://www.example.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.website.com (be patient).....done
Server Software: Apache/2.2.14
Server Hostname: www.example.com
Server Port: 80
Document Path: /
Document Length: 99051 bytes
Concurrency Level: 10
Time taken for tests: 17.872 seconds
Complete requests: 100
Failed requests: 97
(Connect: 0, Receive: 0, Length: 97, Exceptions: 0)
Write errors: 0
Total transferred: 9940632 bytes
HTML transferred: 9898332 bytes
Requests per second: 5.60 [#/sec] (mean)
Time per request: 1787.165 [ms] (mean)
Time per request: 178.716 [ms] (mean, across all concurrent requests)
Transfer rate: 543.19 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 22 29 11.9 26 87
Processing: 717 1740 689.6 1530 3744
Waiting: 586 1475 619.3 1302 3112
Total: 739 1769 688.7 1561 3770
Percentage of the requests served within a certain time (ms)
50% 1561
66% 1713
75% 1892
80% 1975
90% 3300
95% 3674
98% 3674
99% 3770
100% 3770 (longest request)
而我的服务器响应如下:
ab -n 100 -c 10 http://www.example.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.example.com (be patient).....done
Server Software: Apache
Server Hostname: www.example.com
Server Port: 80
Document Path: /
Document Length: 116922 bytes
Concurrency Level: 10
Time taken for tests: 9.024 seconds
Complete requests: 100
Failed requests: 95
(Connect: 0, Receive: 0, Length: 95, Exceptions: 0)
Write errors: 0
Total transferred: 11731386 bytes
HTML transferred: 11693186 bytes
Requests per second: 11.08 [#/sec] (mean)
Time per request: 902.427 [ms] (mean)
Time per request: 90.243 [ms] (mean, across all concurrent requests)
Transfer rate: 1269.51 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 15 21 9.5 17 52
Processing: 311 840 663.6 482 2987
Waiting: 188 362 416.1 216 1607
Total: 338 861 661.8 501 3003
Percentage of the requests served within a certain time (ms)
50% 501
66% 909
75% 1063
80% 1292
90% 2130
95% 2366
98% 2912
99% 3003
100% 3003 (longest request)
还有其他人遇到过这种低传输率的情况吗?这对于 EC2 实例来说正常吗?我可能做错了什么吗?
如果您需要更多信息,请告诉我。
感谢你的帮助。
答案1
example.com 是否托管 PHP/Rails?
老实说,在比较 EC2 与 Rackspace (RS) 基于云的产品时,我经历了相同的基准测试过程,结果非常相似(AB 中使用的是股票 wordpress index.php 页面)
我的结论和研究表明,EC2 的瓶颈(即使在高 CPU 实例上)也是 CPU 或“计算单元”,当它为 PHP 提供服务时。默认主题上最简单的 wordpress index.php 返回的请求数比相同操作系统/堆栈上的 RS 少约 40 倍/秒。老实说,RS 每月 10 美元的云服务器表现优于 160 美元或任何其他 EC2 实例 - 这可能是因为 RS 位于较新的基础设施上,并且每个云服务器都具有对现代 CPU 的直接物理访问。我猜 EC2 只是运行较旧的硬件和/或您的代码和处理代码之间存在更多移动部件/层。
EC2 与任何云产品一样稳定且经过深思熟虑,可能比所有云产品都要稳定和经过深思熟虑,但它并不是一个追求高负载性能的地方,除非您能投入大量资金,此时您可能会从专用产品甚至托管产品中获得更多。
Reddit(Alexa 排名前 100 位的网站)和其他高流量网站托管在 EC2 上 - 所以不要误会我的意思,这是可以做到的。使用高 CPU Web 节点集群预先进行缓存和负载平衡应该可以解决问题。我要说的是 - 如果您希望从一台机器上获得不错的性能来为 php 提供服务,那么其他地方可能更适合您...
如果您每秒获得的请求数不超过 2 个或每天获得的访问数不超过 216,000 次,那么这整个事情可能就不成问题了,您可以/应该从亚马逊堆栈的稳定性和功能中受益。