qq_25128821 2023-11-21 11:26 采纳率: 0%
浏览 45
已结题

java压测、redis、gateway优化

java 问题:本地环境压测2000并发 throughput 只有73/sec ,avg 22s;
项目:gateway 网关,使用springcloud相关组
机器配置:16g内存,处理器12th Gen Intel(R) Core(TM) i7-12700 2.10 GHz;

通过相关工具,定位到主要耗时在于 两部分:

1.redis 的RedisSerializer.deserialize(byte[ ])--这个是自定义方法
     反序列化使用的是RedisSerializer<Object> valueSerializer = RedisSerializer.java()
2.org.springframework.data.redis.connection.RedisConnection.get(byte[ ])

java
redis 集成是用的redisson-spring-boot-starter,配置如下:

spring.redis.redisson.config.threads= 500
spring.redis.redisson.config.nettyThreads= 500
spring.redis.redisson.singleServerConfig.connectionMinimumIdleSize=100
spring.redis.redisson.singleServerConfig.connectionPoolSize=500
spring.redis.redisson.singleServerConfig.idleConnectionTimeout=20000
spring.redis.redisson.singleServerConfig.connectTimeout=5000
spring.redis.redisson.singleServerConfig.timeout=1000
spring.redis.redisson.singleServerConfig.retryAttempts=4
spring.redis.redisson.singleServerConfig.retryInterval=1000

redis 客户端查看命令执行延迟正常;这种情况下如何去定位问题,以及怎样优化?

  • 写回答

21条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2023-11-21 11:41
    关注
    获得1.05元问题酬金

    才2000并发应该不至于啊,单机redis都能抗住10w并发
    1、大概率还是代码问题。
    2、分配运行内存问题,分配内存太小了
    3、需要合理的降级服务
    4、有可能redis被击穿了,直接打到数据库了。
    5、是否有合理使用多线程调度cpu?

    以下是人工智能:
    对于性能问题,尤其是涉及到并发和Redis的场景,可以采取以下一些步骤来进行问题定位和优化:

    1. 性能分析工具: 使用性能分析工具来识别性能瓶颈。例如,可以使用Java性能分析工具(如VisualVM、YourKit等)来检查内存使用情况、线程执行情况等。

    2. Redis监控工具: 使用Redis监控工具来查看Redis的性能指标。redis-cli、Redis的INFO命令、Redisson的监控功能等都可以提供有关Redis服务器性能的信息。

    3. 自定义Redis序列化性能: 检查你的自定义RedisSerializer的性能。可能存在一些不必要的操作或者可以优化的地方。确保序列化和反序列化的逻辑是高效的。

    4. Redis连接池配置: 你已经配置了Redis连接池,但需要确保连接池的配置是合理的。连接池的大小、最小空闲连接数、连接超时等参数都可能影响性能。适当的调整这些参数可以提高性能。

    5. 网关配置优化: 如果Gateway网关作为微服务架构的入口,可能还需要检查网关的配置。网关的线程池配置、路由规则等可能会影响性能。

    6. 系统资源: 确保系统资源(CPU、内存、磁盘)没有受限。检查是否有其他进程或服务占用了过多的资源。

    7. 分布式追踪: 使用分布式追踪工具来追踪请求的流程,以便找到可能的瓶颈。例如,可以使用Zipkin、Jaeger等。

    8. 日志记录: 在关键位置添加日志记录,以便更详细地了解代码执行的流程和时间分布。

    9. 代码Review: 对关键部分的代码进行Review,看是否有不必要的同步、阻塞、循环等。

    10. JVM调优: 根据性能分析结果,适时对JVM进行调优。可以调整堆内存大小、GC策略等。

    最终,性能优化是一个迭代的过程。通过上述步骤,你应该能够找到一些性能瓶颈,并进行相应的优化。在每一步之后,使用性能测试工具进行验证,确保性能的持续改进。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 创建了问题 11月21日