1.介绍
生产环境里面,一个是线程池的大小怎么设置,timeout是什么时长?不合理的话,问题还是很大的。
在生产环境中部署一个短路器,一开始需要将一些关键配置设置的大一些,比如timeout超时时长,线程池大小,或信号量容量。然后逐渐优化这些配置,直到在一个生产系统中运作良好。
- 一开始先不要设置timeout超时时长,默认就是1000ms,也就是1s
- 一开始也不要设置线程池大小,默认就是10
- 直接部署hystrix到生产环境,如果运行的很良好,那么就让它这样运行好了
- 让hystrix应用,24小时运行在生产环境中
- 依赖标准的监控和报警机制来捕获到系统的异常运行情况
- 在24小时之后,看一下调用延迟的占比,以及流量,来计算出让短路器生效的最小的配置数字
- 直接对hystrix配置进行热修改,然后继续在hystrix dashboard上监控
- 看看修改配置后的系统表现有没有改善
2.优化经验
下面是根据系统表现优化和调整线程池大小,队列大小,信号量容量,以及timeout超时时间的经验。
假设对一个依赖服务的高峰调用QPS是每秒30次,一开始如果默认的线程池大小是10。
我们想的是,理想情况下,每秒的高峰访问次数 * 99%的访问延时 + buffer = 30 * 0.2 + 4 = 10线程,10个线程每秒处理30次访问应该足够了,每个线程处理3次访问。
此时,我们合理的timeout设置应该为300ms,也就是99.5%的访问延时,计算方法是,因为判断每次访问延时最多在250ms(TP99如果是200ms的话),再加一次重试时间50ms,就是300ms,感觉也应该足够了。
对于线程池大小来说,一般应该控制在10个左右,20个以内,最少5个,不要太多,也不要太少。