5

我打算部署一个 django 驱动的站点。但我对 web 服务器的选择感到困惑,包括 apache、lighttpd、nginx 等。

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

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

  1. 有没有简单的方法可以在没有生产站点的情况下测试性能?
  2. 或者我可以有一种方法来模拟繁忙的交通来进行公平的测试吗?
  3. 我怎样才能让我的测试公平并接近生产情况?

测试后,我想弄清楚:

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

3 回答 3

3

ab这样的工具通常用于测试一次请求的攻击可以承受多少负载,以及 cacti/munin/您的系统监控工具或选项,您可以生成有关系统负载和请求/秒的数据。这样做的问题是许多人没有意识到他们需要请求很多不同的请求,因为代码的不同部分执行它需要不同的时间。分析和基准测试代码而不是请求也很重要,很多人已经为 django 这样做了benchrun也不是一个坏工具。

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

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

于 2009-09-17T09:38:12.257 回答
2

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

于 2009-09-23T05:16:38.430 回答
1

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

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

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

除此之外,它只是关于更改内容和监控响应时间、吞吐量、内存和 CPU 使用等...查看它们如何根据您使用的 Web 服务器和您托管的内容类型而变化。

于 2009-09-17T09:38:44.703 回答