首页 文章

优化Apache和PHP的并发性能

提问于
浏览
1

我正在使用`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秒 .

What could be the cause and how can I optimize the concurrency performance to an acceptable level?

(我使用的是Ubuntu Linux Server附带的默认配置 . )

1 回答

  • 3

    首先,您需要查看每个脚本消耗的内存量,即 . memory_limit然后用它来划分VM内存 . 这应该是您可以同时处理的连接数,而不会耗尽内存,因此服务器开始进行抖动 .

    您将获得非常少量的连接 . 所以你需要

    • 增加记忆力

    • 减少memory_limit

    • 使每个连接完成得更快

    下一步是查看任何数据库查询是否需要比预期更长的时间,我通常会在查询超过0.5秒时开始查看mysql-slow.log . 如果可以的话,还要删除不使用索引的查询 .

    接下来安装一个监视工具,如collectd,看看是否有足够的CPU可用 .

    从业务角度来看,这取决于这是一个新的网站/系统还是现有的东西 . 如果它是新的并且增长是戏剧性的,那么你需要在硬件上暂停一段时间,一个无法工作或在流量下崩溃的系统会迅速侵蚀企业的信任 . 最重要的是,如果托管账单每月低于1000美元,通常不值得优化 . 如果这是不可承受的,那么您可能需要回到您的商业模式 .

相关问题