Open wanjianjun123 opened 1 year ago
我理解的binlogrecycle是将rocksdb中的binlog回收掉,binlog-save-logs是控制是否将binlog落盘到dump目录,理论上这2个动作都不应该会占用大量内存且不自动释放,不知道是不是我的理解有问题,辛苦大佬解答~~谢谢!
您好,文档我看过的,内存上涨确实没有超过设定的最大值,我不太理解的点是:binlogrecycle期间,持续占用内存,这个逻辑是否合理呢?此时是否会影响正常的读写性能呢?binlogrecycle不是个清理动作嘛,binlog落盘需要使用内存,那落完盘为啥不把内存释放掉呢?
rocks.blockcachemb 153600 因为这里配置了153GB的blockcache,binlog回收的时候会读binlog,就会把数据写入blockcache缓存起来。
rocks.blockcachemb 153600 因为这里配置了153GB的blockcache,binlog回收的时候会读binlog,就会把数据写入blockcache缓存起来。
是的,我的疑问是,当binlog回收完,为什么不把占用的cache释放掉呢?感觉这个不太合理。
释放不了,这是rocksdb的blockcache,读取的数据会加入到blockcache中,然后一直存在,直到有新的数据加入到blockcache里面来。你的场景下没有读请求,在有读请求的场景下,会有新的热数据加入到blockcache中来。
问题描述: 使用memtier_benchmark进行tendis 2.6.0版本压测,100% set,持续压测半小时,压测结束后(此时tendis无任何外部请求),当tendis触发binlogrecycle动作时,tendis进程占用的内存持续增长,最大达到202G。(再次配置binlog-save-logs = 0,测试后,内存未持续增长,怀疑是否与binlogrecycle的机制有关?)
测试环境: tendis:2.6.0 linux:CentOS Linux release 7.7.1908 (Core) memtier_benchmark:memtier_benchmark 1.3.0
压测命令: memtierbenchmark -t 20 -c 50 -s xx.xx.xx.xx -p 3901 -a 123456 --distinct-client-seed --command="set key data" --key-prefix="kv" --key-minimum=1 --key-maximum=50000000 --random-data --data-size=128 --test-time=1800
tendis配置文件: