根据我的发现,只是对 EC2 和 Linode 之间的区别感兴趣。我意识到有一百万件事情会出错。只是想知道从哪里开始。
我一直在对我的博客登录页面的请求进行计时(通过 Apache Benchmark)。它有大约 22 个 sql 查询和相当数量的 html。我在两台服务器上设置了完全相同的站点。
Web1 - 托管在 Linode(512 大小 VPS)。
Web2 - 托管在亚马逊(微型 VPS)。
然后我测试了对两者的 100 个并发连接。我首先运行测试以预热数据库,然后真正运行它。
Web1 - 每秒 33 个请求。
Web2 - 每秒 5 个请求。
然后我安装了页面缓存。这是它将完整的 html 返回存储在文件中的位置。因此,它不会通过 PHP 控制器进行数据库连接,而是返回静态 html 文件。
Web1 - 每秒 32 个请求。
Web2 - 每秒 88 个请求。
您会注意到文件缓存在 Web1 上并没有真正发挥作用。似乎数据库/PHP返回速度很快,只需打开一个文件并返回它。您会注意到在 Web2 上,与第一个请求相比,它变得非常快。
我一整天都做了很多次这些测量。这不是一次性的问题。
这是我所知道的。
- 两个系统都是一样的。当我使用相同的部署脚本配置它们时。
- Web2 (Amazon) 很可能在 SAN(文件系统)上运行。
- Web1 (Linode) 很可能从本地硬盘驱动器(文件系统)运行。
- 不知道它背后的CPU是什么。我会假设它们是不同的CPU。我无法想象CPU有很大的不同。
我真的很想知道是什么让 Web2 在没有缓存的情况下如此缓慢,而在有缓存的情况下却非常快,而 Web1 两种方式都是一样的。
你有什么想法?处理器,IO?
你会做什么来追踪瓶颈?
我没有看到任何疯狂的负载(带有“w”)。不是 100% 在“iostat”中有价值的东西(至于我应该看的东西)。
谢谢。