说到系统管理,我真是个菜鸟。我在 EC2 MicroInstance 上运行一个应用程序。
在公开发布之前,我想确保自己达到了最低的性能水平。我正在尝试进行一些压力测试,但一直难以找到好的比较来帮助我了解自己的表现。
我已经测试了可以说是负载最大的页面,我很好奇这是否适合刚刚启动的网站,并且在最好的情况下,如果媒体点击量恰到好处,可以在一周内看到 10,000 个独立访客。
ab -n 5000 -c 10 http://mysite.com
requests/sec: 53.36
time per request: 18.739 ms
transfer rate: 12.66kb
total transferred 1215000 bytes
没有失败的请求。我的 CPU 最高使用率约为 49%,内存占用不多。平均负载达到 5.70。
95%的请求在 500 毫秒内得到处理。其中一个请求耗时 84996 毫秒。
我在 Ubuntu 10.4 上使用带有 mod_wsgi 的 Apache2.x。我非常确定 MPM 是 Prefork。此服务器处于测试模式,因此没有外部负载。
并发似乎是这里最大的问题。当我删除它时,服务器速度非常快。当我添加超过 10 的并发时,我收到一条错误消息:“指定的超时已过期 (70007)”。
这可能没什么意义,因为我才刚刚开始。我很想听听大家的意见。
谢谢。
答案1
在调整 prefork apache 时我会关注以下几点:
检查 MaxClients 和 ServerLimit。这会告诉您的服务器可以同时运行多少个进程。您应该根据每个进程运行的内存与 RAM 限制进行比较来进行限制。确保为服务器上运行的其他程序(系统、MySQL 等)留出内存
检查 StartServer、MinSpareServers、MaxSpareServers。确保启动服务器时有足够的进程来处理传入的请求,并且保留足够的进程来处理负载。创建新线程的成本相对较高,并且会降低您的请求速度。
保持 KeepAliveTimeout 非常低。这基本上就是进程保持打开状态足够长的时间,以便在继续处理下一个请求之前捕获更多请求。对于 prefork,我将我的值保持在 2
KeepAliveTimeout 2
仅几点建议...希望对您有帮助
答案2
请记住,EC2 微型实例具有 CPU 突发功能 - 您最多可以使用两个计算单元,但只能使用很短的时间。在那段(相当短的)时间之后,您的 CPU 使用率会在几分钟内受到严重限制。
如果您想要更一致的性能,请转到小型实例类型。