统计上发现性能差异

时间:2014-07-29 21:56:30

标签: python performance python-2.7 performance-testing

我在服务器上产生负载并收集性能指标,每隔10秒我保存一些数据(IO util,CPU util等)。

我对代码进行了更改,然后运行另一个负载测试并收集指标。

我有很多指标,所以我正在寻找两件事:

  • 哪些指标发生了最大的变化
  • 那些变化的指标中,它们有多少变化?

对于第一项任务,我目前正在运行Pearson相关,并在两次运行之间运行,并按每个指标的LOWEST相关性进行排序。

对于第二项任务,我将具有最低相关性的指标传递给一个函数,我只是比较每个运行的平均性能并减去sum(list_of_samples) / len(list_of_samples) - sum(list_of_samples2) / len(list_of_samples2)

不幸的是,我没有得到我怀疑应该得到的好数据:

  • 数据有些嘈杂
  • 负载测试会改变负载,以免压倒服务器(以不同的速率增加)

有人知道如何更好地接近这个,或者我可以做些什么改进?我目前正在使用Python编写,但如果有一些神奇的库可以执行此操作,我可以切换语言。

1 个答案:

答案 0 :(得分:1)

我们就是这样做的。

第一个测试是估算最大吞吐量。为此,您只需启动一个负载生成器实例(例如,一个线程),它将请求一个接一个地发送到服务器而不会有任何暂停。然后开始每分钟添加一个实例。过了一段时间,由于并发问题,您的吞吐量(每秒处理的请求数)会停止增长,甚至可能会略微下降。这是此测试的最大吞吐量。您可以在更改代码时使用它来比较多个测试。当服务器处于最大负载时,您也可能会发现一些有趣的瓶颈。

第二个测试是估计响应时间。从先前测试中找到的最大吞吐量中选择约50-80%的负载水平。生成常量负载约10-15分钟(取决于系统,可能在您的情况下,您必须在实际测试之前预热)。收集响应时间和资源使用情况。然后,您可以比较收集的不同统计数据。对于响应时间,它可能是第99次或第95次percentile以及cpu和磁盘的平均负载。