这个应该就是多线程的情况下才会发生的问题,之后再看. 这是我个人在做测试的时候发现valkey的一个新的问题,可以先试试 workflow可以这样: 首先在unstable上进行编译,先起一个服务器,但是不要更改valkey.conf,之后压测的时候应该默认会产生对应的RDB文件才对. 我们就在主线程上做测试看看是否会出现问题.
# 解开当前进程的内存锁
sudo prlimit --memlock=unlimited --pid $$
# 创建在内存中工作的虚拟网卡
sudo modprobe dummy
sudo ip link add dummy0 type dummy
sudo ip link set dummy0 up
# 配置本地的IP
sudo ip addr add 10.0.0.1/24 dev dummy0
# 做RXE的绑定
sudo rdma link add rxe_dummy type rxe netdev dummy0
# 停止本来运行的 valkey
sudo systemctl stop valkey
# 编译一遍
make BUILD_RDMA=yes USE_FAST_FLOAT=yes
# 跑server
sudo ./src/valkey-server valkey.conf --rdma-bind 10.0.0.1 --rdma-port 6379
之后我们起客户端做压测:
# 解开当前进程的内存锁
sudo prlimit --memlock=unlimited --pid $$
# 直接做暴力压测,还可以尝试比这个参数更高的
./src/valkey-benchmark -h 10.0.0.1 -p 6379 -d 256 --threads 16 -c 100 -P 32 -n 20000000 -t get --rdma
然后我们生成了RDB文件:dump.rdb 我发现在unstable分支上确实不会出现问题,可以之后在解决多线程的分支上解决问题. 所以先解决多线程的问题再说.