如何评估Web服务器的性能?

时间:2009-09-17 09:03:11

标签: django performance webserver nginx

我正计划部署django支持的网站。但我对Web服务器的选择感到困惑,其中包括apache,lighttpd,nginx等。

我读过一些关于这些选择的表现的文章。但似乎没有人同意。所以我想知道为什么不自己测试性能呢?

我无法找到有关性能测试Web服务器的最佳方法的信息。所以我的问题是:

  1. 在没有生产现场的情况下,有没有简单的方法来测试性能?
  2. 或者,我可以使用一种方法来模拟繁忙的流量以进行公平的测试吗?
  3. 如何保持我的测试公平并接近生产情况?
  4. 测试结束后,我想弄明白:

    1. 为什么有人说nginx在提供静态文件时性能更好。
    2. 每个Web服务器的cpu和内存需求。
    3. 我最好的选择。

3 个答案:

答案 0 :(得分:3)

ab这样的工具通常用于测试您可以同时从一系列请求中获取多少负载,以及cacti / munin /您的系统监控工具或您可以在系统负载和数据上生成数据的选择。请求/秒。这个问题是很多人基准测试没有意识到他们需要请求很多不同的请求,因为代码的不同部分执行它需要不同的时间。分析和基准测试代码而不是请求也很重要,很多人都有already done so for djangobenchrun也不是一个糟糕的工具。

另一个问题是每个页面视图需要多少HTTP请求。请求数量越少,处理速度越快,网站可以维持大量流量的关键,因为您可以更快地完成和关闭连接,为新的更快地分配资源。

就Web服务器的一般速度而言,不言而喻,代理服务器(在您的端部反向运行)总是比具有静态内容的Web服务器执行得更快。至于Apache vs nginx关于你的django应用程序,似乎mod_python确实比nginx / lighty + FastCGI更快,但这并不奇怪,因为CGI,无论任何加速速度仍然很慢。如果你做得对,在网络服务器上执行和缓存代码并让它管理它总是更快(mod_perl vs使用CGI,mod_php和CGI等)。

答案 1 :(得分:2)

Apache JMeter是压力测试Web应用程序的绝佳工具。它可以与任何Web服务器一起使用,而不仅仅是Apache。

答案 2 :(得分:1)

您需要在某个地方的计算机上设置您选择的Web服务器+网站,最好是具有与您最终部署的硬件规格相似的硬件规格的物理机。

然后,您需要使用负载测试框架(例如The Grinder(免费))来模拟同时使用您网站的许多用户。

负载测试框架应位于不同的计算机上,您应该监控这些计算机的网络和CPU使用情况,以确保测试的限制因素实际上是Web服务器而不是负载注入器

除此之外,它只是改变内容并监控响应时间,吞吐量,内存和CPU使用等......以了解它们如何根据您使用的Web服务器以及您托管的内容进行更改。