问题现象

如题所示的报错发生在使用BenchmarkSQL做数据库性能压测的时候,具体报错如下所示:

可以从最后一行日志中看到,报错信息显示,Terminals配置的值有问题。

来看看其中的具体配置:

可以看到:
【terminals】设置为了:500,表示并发终端数量为500;
似乎没有什么问题。

问题说明

发生这个问题的原因是:terminals参数的值的超出了BenchmarkSQL允许的取值范围。

可以看看BenchmarkSQL的源码:
https://github.com/andl/benchmarkSQL/blob/master/src/main/java/com/benchmarkSQL/jTPCC.java

可以看到,抛出该错误的条件是:

  1. terminals的值被设置为小于或等于0
  2. terminals的值大于warehouses的十倍

以上,我的配置中,满足的错误条件是大于warehouses的十倍。

在我的配置文件中与【warehouse】有关的配置如下所示:

可以看到,【endwarehouse】只设置到了10,因此,如果terminals的大小超过了10*10=100,那么就会爆出错误。

修复问题

将配置文件中的【endwarehouse】修改为1000,因为我总共的warehouses为1000:

然后,再次运行BenchmarkSQL测试:

可以看到,文首的问题已经解决了。


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装