我们正在使用Jmeter来测试在Apache 2 Web服务器上运行的Php应用程序。我可以加载Jmeter以使用25或50个线程,并且服务器上的负载不会增加,但服务器的响应时间会增加。线程越多,响应时间越慢。似乎Jmeter或Apache正在排队请求。我已经更改了apache web服务器配置文件中的maxclients值,但这不会改变问题。当Jmeter运行时,我可以使用该应用程序并获得可观的响应时间。是什么赋予了?我希望通过增加线程数可以将我的服务器降低到0%空闲。任何人都可以帮助我指出正确的方向吗?
更新:我发现如果从我的应用程序中删除会话,我就可以模拟服务器上的满载。我尝试重新启用会话并为每个线程使用HTTP Cookie管理器,但它似乎没有产生影响。
答案 0 :(得分:3)
您需要确定瓶颈发生的位置,然后尝试修复问题。
最后,特别针对您的问题,突出的一点是,可以将大量会话文件存储在单个目录中。 PHP经常将会话信息存储在文件中。如果此目录变大,PHP将花费越来越长的时间来查找会话。如果您运行测试将关闭cookie,PHP应用程序可能已为每个用户请求创建了数千个会话文件。在Windows服务器上,它将比在unix服务器上更快地减速,在两个操作系统上存储目录的方式存在差异。
答案 1 :(得分:2)
您使用的是恒定吞吐量计时器吗?如果Jmeter无法使用分配给它的线程来服务吞吐量,您将在响应时间内看到此排队和井喷。要确定这是否是问题,请尝试添加更多线程。
当脚本中有javascript调用时,我也发现了这种情况的报告。在这种情况下,尝试将javascript调用移动到脚本顶部的测试计划元素,或者寻找预先计算值的方法。
答案 2 :(得分:0)
尝试检查由apache提供的静态文件,而不是PHP,以查看问题是在Apache配置还是PHP配置中。
同时检查您的网络连接和配置。我们的JMeter测试进展顺利,直到碰壁。最终意识到我们只有一个100Mb的连接而且它已经饱和,将千兆位修复它。您的网卡或交换机可能以低于您的速度运行,尤其是当它们的速度设置为“自动”时。