2009-09-17 91 views
5

我打算部署一个Django支持的站点。但是我对Web服务器的选择感到困惑,其中包括apache,lighttpd,nginx等。如何评估Web服务器的性能?

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

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

  1. 是否有任何简单的方法来测试没有生产站点的性能?
  2. 或者我可以有一种方法来模拟繁忙的交通进行公平考试吗?
  3. 我该如何保持测试公平并接近生产情况?

试验结束后,我想弄清楚:

  1. 为什么有的者说提供静态文件时,Nginx已经有更好的表现。
  2. 每个Web服务器的CPU和内存需求。
  3. 我最好的选择。

回答

3

工具,比如ab常用对测试有多少你可以负载需要从一次请求的殴打,旁边仙人掌/穆宁/系统监视工具或选择,你可以生成系统负载&请求/秒的数据。问题在于很多人都没有意识到他们需要请求很多不同的请求,因为代码的不同部分执行需要不同的时间。分析和基准代码,而不是要求也很重要,大量的民间有already done so for djangobenchrun也不是一个坏的工具。

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

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

+2

nginx的/莱蒂+ WSGI的问题上运行得更深一些,比你想象:http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html – 2009-09-17 10:00:11

1

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

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

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

除此之外,它只是改变了内容和监控响应时间,吞吐量,内存和CPU的使用等等,看看他们如何变化取决于你使用的Web服务器和您正在主持什么样的内容。

2

Apache JMeter是用于压力测试Web应用程序的优秀工具。它可以用于任何Web服务器,而不仅仅是Apache。