问题描述
我正在使用HystrixCommand强制长时间运行的查询超时。哪个工作正常。查询配置的时间超时。 但是如果负载断路器打开并且开始拒绝该请求,并且出现以下错误。
从java.util.concurrent.ThreadPoolExecutor@51cd4319中拒绝的任务java.util.concurrent.FutureTask@59c4b527 [正在运行,池大小= 10,活动线程= 10,排队的任务= 0,已完成的任务= 12759]
我试图覆盖Archaius为线程池提供的默认配置(例如corepool大小,最大池大小,队列大小等。)。但不知何故没有效果。以下是我的application.yml文件中的配置。
hystrix: 命令: queryTimeOutHandler: 执行: 隔离: 线: 超时以毫秒为单位:600000 线程池: queryTimeOutHandler: 核心大小:200 最大尺寸:200 maxQueueSize:100 queueSizeRejectionThreshold:100 allowMaximumSizeToDivergeFromCoreSize:true
因此,在配置中,我期望线程数应该为200。它应该一次处理200个请求,并且应该将100个队列。但不幸的是它没有发生。
如何在生产环境中运行的应用程序中检查我的配置?
解决方法
您需要覆盖“ execution.isolation.semaphore.maxConcurrentRequests”
请参阅下面的详细信息。