最新的 SSDB 1.5.0 增加了 Compaction(合并) 限速功能, 避免 LevelDB 在合并的过程中写满磁盘, 导致 SSDB 无法快速的响应请求的情况. 遇到类似问题的 SSDB 用户, 建议你立即升级. 如果你升级之后仍然使用原有的 ssdb.conf 配置文件, 请在 leveldb 一节配置中加入下面一行:
compaction_speed: 100
注意缩进. 这表示限速为 100MB/s, 你可以根据你的磁盘性能调整这个数值.
事实上, 所有使用了 Log-Structured Merge-Tree(LSM-tree) 类似结构的存储服务器, 都可能出现合并过程写满 IO 的问题, 包括 Redis, LevelDB, Cassandra 等. 我不清楚这些软件为什么不加入合并限速功能, 也许是偷懒. 但是, 如果没有合并限速功能, 这些软件的可用性堪忧, 因为它们会出现不确定的几乎无法响应的情况. 我们就曾经忍受了 Redis 合并带来的业务频繁报警, 最后不得不禁用其自动合并功能, 改为在凌晨手动(crontab)触发合并.
据我所知, 新浪微博使用的 Redis 也是他们自己加上了合并限速模块.
SSDB 项目地址: https://github.com/ideawu/ssdb
使用top查看结果如下:
28247 ssdb-user 20 0 28.5g 948m 851m S 0.3 12.1 40:30.79 ssdb-server
我想问下ssdb的过期数据应该怎样清除? Reply