使用YCSB生成多个客户端访问rocksdb时资源暂时不可用的问题如何解决?

问题描述 投票:0回答:1

在使用 YCSB 测试多列族 Rocksdb 的性能时,我使用了四个客户端在 Rocksdb 上加载工作负载,并编写了一个脚本来并行执行四个命令。内容如下: enter image description here 但只能执行一条命令,其他命令由于初始化DB时资源锁定问题而无法执行。终端提示错误信息如下: enter image description here 这个错误信息是否表明多个实例正在使用同一个数据库路径,而一个数据库路径只能被一个实例访问?据我所知,Rocksdb支持多线程并行访问DB。我猜YCSB对Rocksdb施加了限制,但我不知道如何修改这个限制。

在 YCSB/core/src/main/java/site/ycsb/ClientThread.java 中,init() 和 clean up() 方法都使用 RocksDBCLient 类的同步原语,我应该在这里进行修改吗(例如,使用 CAS指令形式————ReentrantLock类来重构锁到RocksDBClient.class? enter image description here enter image description here

synchronized rocksdb ycsb column-family
1个回答
0
投票

当我尝试扩展YCSB以支持rocksdb的多列族时,我遇到了这个问题。 修改YCSB中实现的密钥生成策略后,该问题得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.