![](https://img.haomeiwen.com/i6779176/d36de68d8fdb1855.png)
1. 概述
测试目标
测试redis-server挂掉时候,client的写丢失
有多少
-
写丢失
: 对于client的set操作,redis返回成功,但是redis并没持久化到磁盘
测试条件
- redis服务器,配置是4c8g
- 测试资源,1台8c16g,2台4c8g,3台机器,一共9个locust worker
2. 测试步骤
- 开启多个user,每个user完成不间歇地set操作
- 关闭redis server,等待所有user记录当前写入状态State1
- 启动redis server
- 对比state1与当前redis状态state2,确认
写丢失
情况
3. 测试结论
从10users到2000users,用3台机器压测一台机器,并未发现写丢失
当关闭appendonly、只开启rdb持久化的情况下,很容易发现大量的写丢失
,原因很简单,rdb持久化只有在特定条件下才发生
- 关闭appendonly情况
$ python redis_write_lost_test.py
key count: 100
top10 results sorted by diff:
key: key1-d4uqN6xO, diff: 20962, base_value: 21946, master_value: 984
key: key1-unoy9Qal, diff: 20958, base_value: 22211, master_value: 1253
key: key1-jEAikBwo, diff: 20951, base_value: 24018, master_value: 3067
key: key1-WTXg9ROp, diff: 20946, base_value: 24903, master_value: 3957
key: key1-5bTdpAYq, diff: 20938, base_value: 22511, master_value: 1573
key: key1-4gFKfqnk, diff: 20934, base_value: 22887, master_value: 1953
key: key1-bQGS6mFV, diff: 20929, base_value: 21699, master_value: 770
key: key1-2oOKmbB9, diff: 20929, base_value: 26019, master_value: 5090
key: key1-3cwpG5u8, diff: 20928, base_value: 21317, master_value: 389
key: key1-9euUiFGr, diff: 20915, base_value: 21489, master_value: 574
- 开启appendonly情况
$ python redis_write_lost_test.py
key count: 10
top10 results sorted by diff:
key: key1-ZfTyszVL, diff: 1, base_value: 294, master_value: 293
key: key1-G0J4yjzb, diff: 1, base_value: 275, master_value: 274
key: key1-ire3QgYh, diff: 1, base_value: 290, master_value: 289
key: key1-kogzA3rP, diff: 1, base_value: 277, master_value: 276
key: key1-FMCBaVWl, diff: 1, base_value: 297, master_value: 296
key: key1-czbnKQUs, diff: 1, base_value: 278, master_value: 277
key: key1-4Zx6PHqd, diff: 1, base_value: 272, master_value: 271
key: key1-6DcUqWRI, diff: 1, base_value: 282, master_value: 281
key: key1-3hnoug2Y, diff: 1, base_value: 290, master_value: 289
key: key1-SERcxmVH, diff: 1, base_value: 285, master_value: 284
key count: 50
top10 results sorted by diff:
key: key1-R4O2fVF5, diff: 1, base_value: 602, master_value: 601
key: key1-YQM4f2hH, diff: 1, base_value: 572, master_value: 571
key: key1-NdhQvaoF, diff: 1, base_value: 561, master_value: 560
key: key1-STZCWdQ9, diff: 1, base_value: 548, master_value: 547
key: key1-4kXIC6UN, diff: 1, base_value: 561, master_value: 560
key: key1-I1eTSul0, diff: 1, base_value: 547, master_value: 546
key: key1-y3zYS7Gg, diff: 1, base_value: 565, master_value: 564
key: key1-UNPt7Wqr, diff: 1, base_value: 592, master_value: 591
key: key1-qFupNG9v, diff: 1, base_value: 529, master_value: 528
key: key1-au83sFQ6, diff: 1, base_value: 536, master_value: 535
key: key1-H4JPqcjn, diff: 1, base_value: 548, master_value: 547
key count: 100
top10 results sorted by diff:
key: key1-TYEuMKkm, diff: 1, base_value: 326, master_value: 325
key: key1-jzEQi3LR, diff: 1, base_value: 323, master_value: 322
key: key1-KXUZb4Qz, diff: 1, base_value: 354, master_value: 353
key: key1-QjiebZsH, diff: 1, base_value: 340, master_value: 339
key: key1-1gYrfkcU, diff: 1, base_value: 371, master_value: 370
key: key1-nA1ReJ6o, diff: 1, base_value: 405, master_value: 404
key: key1-Wap7JQY4, diff: 1, base_value: 383, master_value: 382
key: key1-k4zU2EBF, diff: 1, base_value: 361, master_value: 360
key: key1-F4tnBmi1, diff: 1, base_value: 382, master_value: 381
key: key1-vL5O03p8, diff: 1, base_value: 357, master_value: 356
key count: 300
top10 results sorted by diff:
key: key1-7gtX6qTO, diff: 1, base_value: 198, master_value: 197
key: key1-beGOLEzx, diff: 1, base_value: 205, master_value: 204
key: key1-vlyex1pL, diff: 1, base_value: 251, master_value: 250
key: key1-zfDuxbsZ, diff: 1, base_value: 207, master_value: 206
key: key1-nK9ICjoE, diff: 1, base_value: 208, master_value: 207
key: key1-o1Is9uYe, diff: 1, base_value: 220, master_value: 219
key: key1-0spmeTr3, diff: 1, base_value: 209, master_value: 208
key: key1-d2j5bw4c, diff: 1, base_value: 259, master_value: 258
key: key1-QFyBUcgs, diff: 1, base_value: 258, master_value: 257
key: key1-gHv0RQEF, diff: 1, base_value: 264, master_value: 263
key count: 500
top10 results sorted by diff:
key: key1-T1Rbv8yj, diff: 1, base_value: 1442, master_value: 1441
key: key1-e9pIyL1s, diff: 1, base_value: 2674, master_value: 2673
key: key1-j4zHXOBK, diff: 1, base_value: 1520, master_value: 1519
key: key1-ayozPWDS, diff: 1, base_value: 1457, master_value: 1456
key: key1-S2WBcEJ6, diff: 1, base_value: 2130, master_value: 2129
key: key1-r37jUKct, diff: 1, base_value: 1493, master_value: 1492
key: key1-acrVQBfo, diff: 1, base_value: 3140, master_value: 3139
key: key1-rPU8sc0C, diff: 1, base_value: 2322, master_value: 2321
key: key1-nULXblzo, diff: 1, base_value: 2386, master_value: 2385
key: key1-yW5avnMc, diff: 1, base_value: 2239, master_value: 2238
key count: 1000
top10 results sorted by diff:
key: key1-mEucUPCT, diff: 1, base_value: 1960, master_value: 1959
key: key1-QWMjeJAG, diff: 1, base_value: 1843, master_value: 1842
key: key1-mTs6uKCH, diff: 1, base_value: 2366, master_value: 2365
key: key1-ekA683dB, diff: 1, base_value: 1885, master_value: 1884
key: key1-yD2XSJsa, diff: 1, base_value: 1265, master_value: 1264
key: key1-olVvd2qR, diff: 1, base_value: 1360, master_value: 1359
key: key1-eqYOitE8, diff: 1, base_value: 2132, master_value: 2131
key: key1-NFexDpiV, diff: 1, base_value: 1482, master_value: 1481
key: key1-cZMVEoXh, diff: 1, base_value: 2285, master_value: 2284
key: key1-CQ7Ug2wI, diff: 1, base_value: 1425, master_value: 1424
key count: 2000
top10 results sorted by diff:
key: key1-qyQNiX8u, diff: 1, base_value: 553, master_value: 552
key: key1-deU10ANs, diff: 1, base_value: 470, master_value: 469
key: key1-jQvYrzGE, diff: 1, base_value: 348, master_value: 347
key: key1-NYgUb8wZ, diff: 1, base_value: 545, master_value: 544
key: key1-1hyTRYuI, diff: 1, base_value: 402, master_value: 401
key: key1-2faRi9cd, diff: 1, base_value: 1197, master_value: 1196
key: key1-Sfor8bcj, diff: 1, base_value: 659, master_value: 658
key: key1-yzIkFxpm, diff: 1, base_value: 342, master_value: 341
key: key1-MVYJCFcn, diff: 1, base_value: 634, master_value: 633
key: key1-xbVv51rU, diff: 1, base_value: 478, master_value: 477
4. Next
直观感觉,redis是异步持久化,所以不论时间窗口再小,应该能测试到写丢失
的情况。
接下来,可能需要深入理解下redis持久化机制,然后有针对性的测试。
网友评论