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: 接口调用优化,重复调用的接口考虑优化

        

    
    
  • 相关阅读:
    Python3 基本数据类型
    C语言使用以及其它语言经常出的错误
    Deleting array elements in JavaScript
    postgresql 导出建表语句的方法-类似describe table
    什么是分布式系统(通俗易懂的说法)
    什么是分布式系统,分布式系统例子?
    【转】Linux cp -a用法
    [转]Go基础之锁的初识
    fabricJs使用系列(一)
    chrome 的onbeforeunload事件没有触发
  • 原文地址:https://www.cnblogs.com/lodor/p/7716244.html
Copyright © 2011-2022 走看看