根据我的发现,只是对EC2和Linode有什么区别感兴趣。我意识到有一百万个地方可能出错。只是想知道从哪里开始。
我一直在(通过Apache Benchmark)对我的博客登录页面的请求进行计时。它具有大约22个sql查询和相当数量的html。我在两台服务器上设置了完全相同的站点。
Web1-托管在Linode(512大小VPS)上。
Web2-托管在亚马逊(微型VPS)。
然后,我测试了两者都建立100个并发连接。我先运行测试以预热数据库,然后才真正运行它。
Web1-每秒33个请求。
Web2-每秒5个请求。
然后我安装了页面缓存。这是将完整的html返回存储在文件中的位置。因此,它无需返回PHP Controller 并建立数据库连接,而只是返回静态html文件。
Web1-每秒32个请求。
Web2-每秒88个请求。
您会注意到,文件缓存在Web1上并没有真正起作用。似乎数据库/PHP返回的速度很快,只需打开一个文件并返回即可。您会注意到,在Web2上,与第一个请求相比,它变得非常疯狂。
我整天做了很多次这些测量。这不是一次性的问题。
这就是我所知道的。
部署脚本。
我真的很想知道是什么使没有缓存的Web2变慢,而有缓存并且Web1的两种速度都相当快。
你有什么想法? CPU,IO?
您将怎么做才能找到瓶颈?
我看不到任何疯狂的负荷(带有“w”)。不是100%在“iostat”中有值(value)的东西(关于我应该看的东西)。
谢谢。
最佳答案
一个可能的因素是,与标准HDD相比,EC2 EBS的体积往往很慢(与SSD相比甚至更大)。
See this SO Q&A. And this criticism (that is linked to from the SO link).
这可能不是造成速度缓慢的完整原因,但至少是部分原因(如果Linode选项使用的是真正的HDD)。
关于io - Amazon EC2和Linode之间的性能差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12207426/