zoukankan      html  css  js  c++  java
  • 【spring cloud】并发测试问题

    一,问题

         并发测试,对外接口测试50个并发的时候开发报错,报错信息类似如下:

     {"status":"0500","message":"GiftExchangeOrderClient#queryExchangeGifts(String,String,String,String) could not be queued for execution and no fallback available.","data":null}
     

    二,方案

    hystrix:
      command:
        default:
          execution:
            timeout:
              enabled: true
            isolation:
              strategy: THREAD
              semaphore:
                maxConcurrentRequests: ${HYSTRIX_COMMAND_MAXCONCURRENTREQUESTS:1000}
              thread:
                timeoutInMilliseconds: ${HYSTRIX_COMMAND_TIMEOUTINMILLISECONDS:30000}
      threadpool:
        default:
          ## 并发执行的最大线程数,默认10
          coreSize: ${HYSTRIX_THREADPOOL_CORESIZE:500}
          ## BlockingQueue的最大队列数
          maxQueueSize: ${HYSTRIX_THREADPOOL_MAXQUEUESIZE:500}
          ## 即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
          queueSizeRejectionThreshold: ${HYSTRIX_THREADPOOL_QUEUESIZEREJECTIONTHRESHOLD:300}

    三,原理

       1:hystrix的连接线程池限制

    ## 并发执行的最大线程数,默认10
          coreSize: ${HYSTRIX_THREADPOOL_CORESIZE:500}
          ## BlockingQueue的最大队列数
          maxQueueSize: ${HYSTRIX_THREADPOOL_MAXQUEUESIZE:500}
          ## 即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
          queueSizeRejectionThreshold: ${HYSTRIX_THREADPOOL_QUEUESIZEREJECTIONTHRESHOLD:300}

      2:hystrix的超时设置

         并发大的情况下,响应时间会很长,hystrix的默认超时时间是3秒内,故也会报接口错误问题

       调整

     timeoutInMilliseconds: 30000


    除了hystrix的超时设置之外,还有ribbon超时设置


    四,其他方案
    1: 接口增加缓存
    2: 接口调用优化,重复调用的接口考虑优化

        

    
    
  • 相关阅读:
    互联网公司笔试常见陷阱
    华为机试题(地铁换乘,图的应用)
    容器(vector)、数组、new创建的动态数组,你到底用哪一个(执行效率分析)
    SpringMVC全局异常
    github commit contributions无记录
    elasticSearch之查询
    nginx负载均衡策略
    docker入门
    解决centos&win安装安装elasticSearch无法运行
    2017年终总结
  • 原文地址:https://www.cnblogs.com/lodor/p/7716244.html
Copyright © 2011-2022 走看看