我有一个networking服务器,我希望基准之前,我做了一些优化,看看它们是否有任何效果。
但是,我想知道什么是基准testing的最佳实践?
例如,一位同事告诉我用本地networking上的另一台机器对机器进行基准testing,以消除networkingstream量问题。
不过,我正在考虑使用非现场机器进行基准testing,因为我想了解优化是否会在实际情况中产生任何影响。
我认为,许多速度调整处理优化networking连接。 例如,在Apache中,KeepAlive值允许浏览器使用单个TCP连接来请求多个对象,而不是打开和closures每个资源的连接。
如果testing是在本地networking连接上完成的,那么调整就不会有太大的改变,对吧? 与最小化js / css和从HTML中删除空格/注释一样。
另一方面,我确实看到互联网stream量的问题,使得基准testing每次都是一致的。 我真的不知道数字的变化是从调整,还是在两者之间的服务器增加或减less的负载。
谁是对的? 基准testing的最佳做法是什么? 我们应该这样做吗?
tl; dr – 我应该使用本地networking/异地/或两者的机器进行基准testing吗?
这一切都取决于你的网站。 同时执行脱机和现场基准不会受到影响。 但是,什么调整,如何testing?
如果你主要提供静态内容或一些非常简单的dynamic内容,并以疯狂的速度进行操作,那么在Apache超时/内核级别调整内容是有道理的。
如果你有一个dynamic网站,那么很快就会变成另一个野兽。 当然,做所有的Apache和内核级别的优化仍然是一个明智的事情,但不要被这些愚弄和镜像。
当涉及性能调整/testing时,请首先处理最慢的部分。 对于一个dynamic站点来说,真正的瓶颈很可能是1)数据库或2)你的站点运行的脚本。
如果最慢的部分是数据库,那么在使数据库变得更快之前,对Apache进行性能调整是没有意义的。 除此之外,你需要确保你有正确的caching技术,如果可能的话,你运行memcached或类似的。
所以,这是关于什么基准和调整。 现在, 如何进行基准testing?
我喜欢运行两种基准。 如果这些数字已经知道 – 比方说一个网站正在改版,所以你知道独立访问者,页面加载和旧网站的类似统计数据 – 我运行一个现实的基准,其速度类似于当前的网站。 我也用类似的速度* 2来衡量它的未来增长能否保持一点。
我喜欢运行的另一种基准是吸烟和烧伤的网站。 我只是用尽可能快的速度跑疯狂的同步请求来折磨他们。 如果它能够承受的话,那么很好,如果不能的话,我会发现什么是突破点。
我喜欢的工具:ab,围攻,JMeter。
我使用了持续指定的%T(服务时间)的自定义日志格式。 我用格式replace了%l(identd name)。 这可以用来识别调整的慢页面。 慢速线路上的大量响应可能导致误报,networking重试也是如此。
我使用自定义日志摘要脚本来确定页面响应速度最慢,平均响应时间。 这些可能是优化的好目标。 比较报告随着时间的推移有助于确定即将出现的问
客户端工具可以提供良好的压力基准,并validation修复程序没有破坏网站。 有些因素可以提供与您在生产中获得的不匹配的基准。