錯誤:java.lang.RuntimeException:could not acquire a semaphore for execution

最近對接口進行壓測,發現只要超過10個線程就報錯,都是11個線程請求就報下面的錯:

於是查看後臺日誌,定位錯誤日誌如下:

大致可以看出是hystrix的問題,於是百度hystrix的相關配置,詳細配置: https://github.com/Netflix/Hystrix/wiki/Configuration 

hystrix有兩種策略:

  • THREAD     —     它在單獨的線程上執行,併發請求受線程池中線程數的限制
  • SEMAPHORE —     它在調用線程上執行,併發請求受信號量限制

看到其中:

默認10個線程,當然第11個就報錯,於是配置文件增加下面的配置:

hystrix.threadpool.default.coreSize=100
hystrix.threadpool.default.maxQueueSize=1500
hystrix.threadpool.default.queueSizeRejectionThreshold=1000
hystrix.command.default.execution.timeout.enabled=false
hystrix.command.default.execution.isolation.strategy=THREAD

問題解決。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章