【问题标题】:How to evaluate the performance of web servers?如何评估 Web 服务器的性能?
【发布时间】:2010-11-29 02:05:00
【问题描述】:

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

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

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

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

经过测试,我想弄清楚:

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

【问题讨论】:

    标签: django performance webserver nginx


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-05
        • 2016-07-14
        • 1970-01-01
        • 2012-08-08
        • 2011-12-04
        • 2011-04-23
        • 2013-06-04
        • 2010-10-24
        相关资源
        最近更新 更多