【发布时间】:2013-11-11 19:10:36
【问题描述】:
我正在使用“ab”工具测试我的 Apache 和 PHP 设置(Ubuntu 上的默认配置)。通过 2 个并发连接,我得到了相当满意的结果:
ab -k -n 1000 -c 2 http://localserver/page.php
Requests per second: 184.81 [#/sec] (mean)
Time per request: 10.822 [ms] (mean)
Time per request: 5.411 [ms] (mean, across all concurrent requests)
鉴于它是内存不足的虚拟机,没关系。现在我想测试一个更现实的场景:请求分布在同时连接的 100 个用户(阅读:连接)中:
ab -k -n 1000 -c 100 http://localserver/page.php
Requests per second: 60.22 [#/sec] (mean)
Time per request: 1660.678 [ms] (mean)
Time per request: 16.607 [ms] (mean, across all concurrent requests)
这更糟。虽然总体每秒请求数没有显着下降(184 到 60 #/秒),但每个请求的时间从用户角度急剧上升(平均从 10 毫秒到超过 1.6 秒) .最长的请求耗时 8 秒以上,测试过程中使用 Web 浏览器手动连接本地服务器耗时近 10 秒。
可能是什么原因以及如何将并发性能优化到可接受的水平?
(我使用的是 Ubuntu Linux 服务器附带的默认配置。)
【问题讨论】:
-
这不首先取决于本地脚本正在执行什么吗?你可以使用 memcache(d) 吗?
-
本地脚本只执行了一堆简单的回显语句。我故意不包括任何数据库工作。
-
如果是低内存虚拟机,为什么不使用 nginx、lighttp 或其他的?
-
你在什么平台上运行这个?除非它是空闲的测试机器、您控制的专用服务器或不使用可突发资源的 VM 实例,否则您的测试几乎没有意义,因为它们几乎完全取决于使用该硬件的其他设备当时。如果这是在 AWS 微实例之类的东西上运行 [我怀疑它是],那么除了可怕的性能之外,你不应该期待任何其他东西。
-
@Sammitch 它在 ~3GHz 的 Intel QuadCore 上的本地 VirtualBox 实例上运行。 VM 分配有 256 MB RAM 和 1 个 CPU。主机或多或少处于空闲状态,拥有 8 GB RAM。
标签: php apache apachebench