大伙好,最近我在测试单节点tikv 的非常简单的raw kv ,想这个是否能用于替换类似redis的nosql,但测试结果是多线程能达到2万多。但单线程就上不去,大概在2千左右。
想问下,单线程的瓶颈在哪里,是否能通过改配置来提高。
我用的是go的客户端测试。我在10.54.37.72上部署的是一个pd和一个tikv,foo的value是非常短的字符串。像是瓶颈不在rocksdb上。
我尝试过修改raw_get的函数,不读取rocksdb直接返回。但qps还是上不去。不是知道是不是路由采用了future库的异步get的问题。想把异步改成直接返回试试,还没找到方法。
tikv的低版本和高版本都测试过。
go的raw测试代码。
package main
import (
“fmt”
“time”
“github.com/pingcap/tidb/config”
“github.com/pingcap/tidb/store/tikv”
)
func main() {
cli, err := tikv.NewRawKVClient(string{“10.54.37.72:2379”}, config.Security{})
if err != nil {
panic(err)
}
defer cli.Close()
fmt.Printf("cluster ID: %d\n", cli.ClusterID())
tamp := time.Now().Format("2006-01-02 15:04:05")
fmt.Println(tamp)
var a int64
key := []byte("foo")
for a = 0; a < 100000; a++{
_, err := cli.Get(key)
if err != nil {
panic(err)
}
//fmt.Printf("found val: %s for key: %s\n", val, key)
}
end := time.Now().Format("2006-01-02 15:04:05")
fmt.Println(end)
}