Web 服务器基准测试的最佳实践

Web 服务器基准测试的最佳实践

我有一个网络服务器,在对其进行优化之前,我想对其进行基准测试,看看它们是否有任何效果。

然而,我想知道基准测试的最佳实践是什么?

例如,一位同事告诉我将这台机器与本地网络上的另一台机器进行基准测试,以消除网络流量问题。

然而,我正在考虑使用异地机器进行基准测试,因为我想看看优化在真实情况下是否会产生任何影响。

我认为许多速度调整都与优化网络连接有关。例如,在 Apache 中,KeepAlive 值允许浏览器使用单个 TCP 连接来请求多个对象,而不是为每个资源打开和关闭连接。

如果测试是在本地网络连接上进行的,那么这种调整实际上不会产生太大的影响,对吗? 最小化 js/css 并从 HTML 中删除空格/注释也是一样。

另一方面,我确实看到了互联网流量的问题,导致每次基准测试都不一致。我真的不知道数字的变化是来自调整,还是服务器之间的负载增加或减少。

谁说得对?基准测试的最佳实践是什么?我们应该同时做这两件事吗?

总结- 我应该使用本地网络/场外/或两者上的机器进行基准测试吗?

答案1

这一切都取决于你的网站。进行离线和现场基准测试不会有什么坏处。但是,要调整什么以及如何测试呢?

如果您主要提供静态内容或一些非常简单的动态内容,并且以疯狂的速度进行,那么在 Apache 超时/内核级别进行调整是有意义的。

如果您有一个动态网站,那么调整很快就会变成一件非常困难的事情。当然,进行所有这些 Apache 和内核级别的优化仍然是明智之举,但不要被这些所欺骗和蒙蔽。

当谈到性能调整/测试时,总是首先关注最慢的部分。对于动态网站,真正的瓶颈很可能是 1) 数据库或 2) 网站正在运行的脚本。

如果最慢的部分是数据库,那么在提高数据库速度之前对 Apache 进行性能调整是没有意义的。除此之外,您还需要确保采用适当的缓存技术,并且运行memcached或类似情况(如果可能)。

这就是什么进行基准测试和调整。现在,如何进行基准测试?

我喜欢运行两种基准测试。如果数字已知——比如说,一个网站正在改版,所以你知道旧网站的独立访客、页面加载量和类似统计数据——我会运行一个现实的基准测试,其速率与当前网站相似。我还会用类似的速率 * 2 来对它进行基准测试,看看它是否能承受未来的一点增长。

我喜欢运行的另一种基准测试是让网站冒烟并烧毁。我会尽可能快地运行基准测试,同时处理大量请求,折磨网站。如果它能承受,那就太好了,如果它不能,我就会找出临界点。

我喜欢的工具:ab、siege、JMeter。

答案2

我使用了一种自定义日志格式,其中持续指定了 %T(服务时间)。因此,我在格式中替换了 %l(identd 名称)。这可用于识别慢速页面以进行调整。慢速线路上的大量响应可能会导致误报,网络重试也会导致误报。

我使用自定义日志摘要脚本来识别响应最慢和平均响应时间的页面。这些可能是优化的良好目标。比较一段时间内的报告有助于识别即将出现的问题。

客户端工具可以提供良好的压力基准并验证修复是否破坏了网站。有些因素可能导致提供的基准与您在生产中获得的基准不符。

相关内容