【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: 接口調用優化,重復調用的接口考慮優化

    

 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM