我打算部署一个Django动力网站。 但是我对Web服务器的select感到困惑,其中包括apache,lighttpd,nginx等等。
我读过一些有关这些select的performance的文章。 但似乎没有人同意。 所以我想知道为什么不自己testing性能?
我找不到有关性能testingWeb服务器的最佳方法的信息。 所以我的问题是:
经过testing,我想弄清楚:
像ab这样的工具通常用于测试从一次请求的攻击中可以带来多少负载,以及cacti / munin /您的系统监视工具,或者可以根据系统负载和请求/秒生成数据的选项。 这个问题很多人基准没有意识到他们需要请求很多不同的请求,因为你的代码的不同部分执行需要不同的时间。 对代码进行性能分析和基准测试并非要求也是非常重要的, django已经有很多人已经这样做了 , benchrun也不是一个坏的工具。
另一个问题是每个页面视图需要多少个HTTP请求。 请求数量越少,处理速度就越快,因此网站可以承受大量流量的关键是,您可以更快地完成和关闭连接,您可以更快地为新数据分配资源。
就Web服务器的一般速度而言,不言而喻,代理服务器(在您的端点反向运行)总是比具有静态内容的Web服务器执行得更快。 至于Apache的Nginx的问候你的Django的应用程序,似乎mod_python确实比Nginx / lighty + FastCGI快,但这并不奇怪,因为CGI,无论任何加速仍然缓慢。 在web服务器上执行和缓存代码并让它管理它总是更快(mod_perl vs使用CGI,mod_php vs CGI等),如果你做得对。
Apache JMeter是用于压力测试Web应用程序的优秀工具。 它可以用于任何Web服务器,而不仅仅是Apache。
您需要在某个机器上设置您所选择的Web服务器+网站,最好是具有与您将最终部署到的硬件规格类似的硬件规格的物理机器。
然后,您需要使用一个负载测试框架,例如The Grinder (免费),以同时模拟许多使用您站点的用户。
负载测试框架应该在单独的机器上,您应该监视这些机器的网络和CPU使用情况,以确保测试的限制因素实际上是Web服务器而不是您的加载注入器。
除此之外,它只是改变内容和监控响应时间,吞吐量,内存和CPU使用等等,看看它们是如何改变的,取决于你使用的是什么Web服务器以及你要托管什么类型的内容。