這種情況可以分為兩種情況
一.被調(diào)用方的問題
1.被調(diào)用方代碼效率的問題,有可能接口真的超時(shí)了
2.被調(diào)用方啟動(dòng)時(shí)沒有默認(rèn)啟動(dòng)DispatcherServlet描孟,沒有調(diào)用Servlet的init方法,所以第一次請求過來時(shí)會(huì)消耗1秒左右的時(shí)間献丑,如果這時(shí)調(diào)用方啟動(dòng)了默認(rèn)的斷路器時(shí)間(默認(rèn)1秒)咽袜,這時(shí)就很容易出現(xiàn)超時(shí)的情況,但是后面再次調(diào)用就不會(huì)有這種情況了挺举。
解決方案,修改DispatcherServlet的初始化時(shí)間烘跺,spring.mvc.servlet.load-on-startup默認(rèn)為-1湘纵,設(shè)置為0或正整數(shù)即可
spring.mvc.servlet.load-on-startup=1
二.調(diào)用方的問題
調(diào)用方調(diào)用其他服務(wù)的時(shí)候可能還沒有加載client,在首次調(diào)用時(shí)會(huì)消耗一定的時(shí)間滤淳,可以通過下面配置來在啟動(dòng)時(shí)初始化這個(gè)配置
解決方案梧喷,添加配置
?# 饑餓加載,避免剛啟動(dòng)第一次請求超時(shí)
ribbon.eager-load.enabled=true
?# 初始化的client列表
ribbon.eager-load.clients=aaa
另外還需要添加一下短路器的超時(shí)時(shí)間
#斷路器超時(shí)時(shí)間脖咐,默認(rèn)1000ms
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000