client性能问题,txn写入速度比sysbench的要慢10倍,而且会出现TSO 的warn(补充: 增加线程似乎可以打破性能瓶颈,但是内存持续增长)

谢谢,请问那为什么通过sysbench依赖mysql进行测试ops就可以很高,集群都是一个集群,pd的这个warn应该是客户端打印出来的,是否这个tikv的go客户端还不够完善,跟TIDB相比有一些不足

1.麻烦先帮忙确认下,sysbench测试也是client同样的代码吗?两种压测逻辑是完全一样的吗?
2.集群拓扑结构也是一样的吗?sysbench测试时拓扑是什么?

不是啊,sysbench就是用的lua脚本,按照这个https://docs.pingcap.com/zh/tidb/stable/benchmark-tidb-using-sysbench的指导来做的,没细看做了什么,看起来就是向mysql里面灌数据,两种压测逻辑不一样,集群的拓扑结构都是一样的,没有任何变化。由于我们只是想利用tikv,所以不太关注tidb的逻辑,所以通过sysbench+mysql的方法来测试不太满足我们的应用场景,所以就写了一个简单的go程序去调用client的api

  1. 感觉这两个业务逻辑都不一致,所以qps,cpu,内存,io使用等也会存在差异。他们对比感觉不是很合适。
  2. 从client测试看,感觉可以把磁盘资源再分散一些,测试一下是否会有改善。

请问有什么可以参考的client测试代码示例吗?我这个是官方给的demo,只能保证可用性。

没有,只是觉得您用sysbench测试和go-client测试的脚本对比感觉没有相关性。他们两个结果对比慢也不是很合理。通常要对比都使用相同的业务比较合适吧。

谢谢,对于我这边来看,我更关注的是tikv的write ops,所以更主要是想找到sysbench测试方式与go client的差别,更好的使用go client

您可以查看一下sysbench的监控,看看系统资源的消耗是否有瓶颈,对比一下监控信息。

好的,谢谢

感谢反馈 ~

这边排查了一下,目前 client-go 引用的 PD client 版本存在一个之前引入的性能问题,这个也可以从你抓包的 pprof 里面确认到对应函数导致 CPU 占用率高,这个 PR 做出了修复:https://github.com/tikv/client-go/pull/66

烦请等待合入以后更新一下你使用的 client-go 版本,以消除这个性能问题,感谢!

cc @yilong @abunchlotus @andylokandy

谢谢,go是不太熟悉,初学,我看了一下我的import
import (
“context”
_ “context”
“flag”
“fmt”
_ “fmt”
github.com/go-basic/uuid
github.com/pingcap/tidb/kv
github.com/pingcap/tidb/store/tikv
“io/ioutil”
“os”
_ “os”
“strconv”
“sync”
“time”
)
似乎没有依赖go-client了,之前按照https://tikv.org/docs/4.0/reference/clients/go/这里的例子更新了一下代码
创建客户端的方式变成了
txnclient, err = driver.Open(fmt.Sprintf(“tikv://%s”, *pdAddr))
应该依赖tidb那个包,这样也需要更新吗

根据你主楼里的问题描述,你最开始使用的是 go client 来进行的测试吧?后来根据那个文档换成了 tidb 里面集成的 tikv client,也就是你现在用的这个。主楼里贴的 pprof 来自于有性能问题的那一版 go client,现在更新了以后,你可以按你之前用 go client 测试的方式进行测试,看能不能消除最开始 CPU 占用的问题。

哦哦,好的,谢谢

多谢大佬

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。