在SpringCloud中我们知道Feign整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。在使用了两台机器注册了同一个服务,使用Feign来实现负载均衡,使用ApacheBench:ab -c 200 -n 400   来测试了一下,结果出现了:

java.util.concurrent.TimeoutException:和java.util.concurrent.RejectedExecutionException的错误。下面是一些解决方法:

java.util.concurrent.RejectedExecutionException:Task java.util.concurrent.FutureTask@17ae8f5c rejected from java.util.concurrent.ThreadPoolExecutor@6de18564[Running, pool size = 10, active threads = 8, queued tasks = 0, completed tasks = 122]

从以上我们可以知道是线程池的问题,线程池大小为10,我们可以找到设置线程池的配置属性修改即可:

在application.properties文件中修改线程池大小:hystrix.threadpool.default.coreSize = coreSize


java.util.concurrent.TimeoutException:在第一次请求Feign时和请求的任务没有在默认时间完成时会出现:解决方法:在application.properties文件中设置属性

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 10000


hystrix.command.default.execution.timeout.enabled=false

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐