由于生产环境下业务服务器总响应延迟需要控制在100ms内,为了尽量减少日志输出环节的耗时,考虑将日志吐到redis中缓存,由其他程序异步的从redis中取数据。在生产环境改造日志数据系统之前,对单机的redis读写性能做了测试。
1. 测试环境和测试工具
CPU:8核
内存:8G
Redis版本:3.2.6
测试工具:redis官方基准测试工具 redis-benchmark
2. 测试单实例 redis的 读写list 数据结构性能
本地/局域网 | 读写类型 | 测试命令 | client连接数 | qps | 延迟响应 <= 1ms比例 | 延迟响应 <= 2ms比例 | 延迟响应 <= 4ms比例 | 延迟响应 <= 8ms比例 |
本地 | 写 | lpush | 1 | 35714 | 100% | 100% | 100% | 100% |
本地 | 写 | lpush | 2 | 63000 | 100% | 100% | 100% | 100% |
本地 | 写 | lpush | 4 | 153846 | 100% | 100% | 100% | 100% |
本地 | 写 | lpush | 8 | 155914 | 100% | 100% | 100% | 100% |
本地 | 写 | lpush | 16 | 151788 | 99.99% | 100% | 100% | 100% |
本地 | 读 | rpop | 1 | 38971 | 100% | 100% | 100% | 100% |
本地 | 读 | rpop | 2 | 65832 | 100% | 100% | 100% | 100% |
本地 | 读 | rpop | 4 | 162469 | 100% | 100% | 100% | 100% |
本地 | 读 | rpop | 8 | 184928 | 100% | 100% | 100% | 100% |
本地 | 读 | rpop | 16 | 171452 | 100% | 100% | 100% | 100% |
局域网 | 写 | lpush | 1 | 10009 | 99.99% | 99.99% | 100% | 100% |
局域网 | 写 | lpush | 2 | 13563 | 99.98% | 99.98% | 99.99% | 100% |
局域网 | 写 | lpush | 4 | 25601 | 99.98% | 99.99% | 100% | 100% |
局域网 | 写 | lpush | 8 | 43830 | 99.98% | 99.98% | 99.99% | 100% |
局域网 | 写 | lpush | 16 | 68820 | 99.94% | 99.97% | 99.99% | 100.00% |
局域网 | 读 | rpop | 1 | 6214 | 99.97% | 99.98% | 99.99% | 100% |
局域网 | 读 | rpop | 2 | 13289 | 99.94% | 99.97% | 99.99% | 100% |
局域网 | 读 | rpop | 4 | 24900 | 99.98% | 99.98% | 99.99% | 100% |
局域网 | 读 | rpop | 8 | 37118 | 99.96% | 99.98% | 99.99% | 100% |
局域网 | 读 | rpop | 16 | 69492 | 99.93% | 99.96% | 99.99% | 100% |