连初级都算不上的代码小白 2024-07-20 15:25 采纳率: 52.4%
浏览 17

redis存大数据量压测崩溃

我们想把访问数据放到redis中,然后每分钟启动java及时任务,将redis中的数据传输到clickhouse。但是当我们测试压力测试时,当它是 7-8 分钟时,redis 服务器崩溃如下所示。如何解决?访问数据如.200QPS

我们扩大了内存,但再次失败
存储的数据比如

img


redis用到的数据结构:sortedset、list

报错信息如下

img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-07-20 16:22
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    针对您提出的问题,我们可以从以下几个方面入手来解决Redis服务器在压力测试中崩溃的问题:

    1. Redis服务器崩溃的原因分析

      • 根据您提供的日志信息,Redis崩溃的原因可能是由于命令超时(RedisCommandTimeoutException)。这通常发生在Redis服务器因为负载过高而无法及时响应请求时。需要检查Redis服务器的资源使用情况,包括CPU、内存和网络带宽等。
    2. 优化Redis配置

      • 您已经尝试过扩大内存,但可能还需要调整其他配置,如maxmemory-policy(最大内存策略),来决定当内存达到上限时Redis如何处理。例如,可以设置为allkeys-lru,即淘汰最近最少使用的键。
      • 考虑调整timeout参数,增加命令的超时时间,以避免因超时而造成的异常。
    3. 改进数据传输策略

      • 评估当前的Java定时任务执行频率是否合理。如果每分钟的频率太高,可以考虑增加间隔时间,或者根据实际负载情况动态调整。
      • 考虑使用批处理方式进行数据传输,减少对Redis的访问次数。
    4. 使用合适的数据结构

      • 根据访问模式和数据特性,评估是否需要更换数据结构。例如,如果数据主要是用于排序和范围查询,sorted set是一个合适的选择。但如果需要频繁地插入和删除操作,可能需要考虑使用其他结构。
    5. 代码优化

      • 根据错误信息,检查Java代码中是否有可以优化的地方,比如减少不必要的网络请求,优化数据序列化和反序列化过程,使用更高效的Redis客户端库等。
    6. 压力测试的调整

      • 设计更加细致的压力测试方案,逐步增加负载,同时监控Redis的性能指标,如响应时间和吞吐量等,以便及时发现问题并进行调整。

    具体操作或代码实现方法可能包括:

    • 使用Redis监控工具,如redis-cli --stat或第三方监控系统,来实时监控Redis的性能。
    • 在Redis配置文件中调整相关参数,如maxmemorymaxmemory-policy
    • 在Java代码中实现批处理逻辑,减少对Redis的访问频率。
    • 根据实际需求选择合适的Redis数据结构,并在Java代码中进行相应的操作。
    • 使用性能分析工具,如JProfiler或VisualVM,来分析Java代码的性能瓶颈。
    • 设计压力测试脚本,模拟不同的访问模式和负载情况。

    请注意,解决这类问题通常需要综合考虑多个因素,包括硬件资源、软件配置、代码实现和测试策略等。希望这些建议能帮助您找到问题的根本原因并采取相应的解决措施。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月20日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?