美文网首页Linux
Redis - 两种持久化appendonly和rdb的写丢失测

Redis - 两种持久化appendonly和rdb的写丢失测

作者: 红薯爱帅 | 来源:发表于2021-07-18 18:40 被阅读0次

    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持久化机制,然后有针对性的测试。

    5. 参考文档

    相关文章

      网友评论

        本文标题:Redis - 两种持久化appendonly和rdb的写丢失测

        本文链接:https://www.haomeiwen.com/subject/fixwpltx.html