01-Dubbo設(shè)置超時時間失效

問題:周一出現(xiàn)生產(chǎn)問題,服務(wù)cps-service報死鎖,adm-service報線程池耗盡。adm宕掉之后,2個小時無法做交易。

分析:初步分析,DBA并沒有發(fā)現(xiàn)表鎖,可能是adm-service超時超過50s之后,cps-service有提交事務(wù),超過mysql配置的最大50s的時間,所以拋出死鎖,但是唯一的困惑是,Dubbo服務(wù)默認時間為1s,cps不可能等待adm50s

操作:之后在壓測環(huán)境進行測試,adm設(shè)置線程池數(shù)為2,目的讓adm的線程池耗盡,之后10個線程發(fā)請求,adm報線程池耗盡錯誤,cps未報出死鎖;之后將adm服務(wù)sleep50s,之后發(fā)送請求,發(fā)現(xiàn),cps調(diào)用adm會一直等待50s后,也就是說dubbo的默認超時時間沒有生效,之后需要排查為什么Dubbo設(shè)置超時時間失效。

查看源碼發(fā)現(xiàn),DubboInvoker類中,如果沒有設(shè)置,默認時間是1秒。

簡單的排查沒有發(fā)現(xiàn)問題,之后想到,dubbo注冊再zk上的url連接中,有timeout的設(shè)置時間,打開zk,拿到該服務(wù),consumer和provider的注冊url,timeout為180秒,之后在項目中搜索180秒,找到錯誤原因,CPS引用了bmp的xml,該xml配置了consumer的超時時間為180秒

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容