grpc 報錯解決 code = Unavailable desc = transport is closing

最近遇到 grpc 客戶端報錯 rpc error: code = Unavailable desc = transport is closing,原因是連接長時間沒有使用,被服務端斷開,

但是看過grpc源碼的都知道,如果failfast 設置爲false的話,應該會重試的;並且 連接關閉之後grpc.clientConn也會維護這個狀態,所以不應該出現這個問題纔對,

這個是個很奇怪的事情

後來考慮了一下有可能是網絡之間proxy等的問題,因爲長時間不活躍關閉了,但是不通知grpc的client和server端

在 grpc.NewServer(opt...) 的時候加上 以下參數,就是連接長時間不使用,就釋放

驗證完美解決問題

grpc.KeepaliveParams(keepalive.ServerParameters{
			MaxConnectionIdle: 5 * time.Minute, //這個連接最大的空閒時間,超過就釋放,解決proxy等到網絡問題(不通知grpc的client和server)
		}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章