KeiStory

728x90
반응형

C# gRPC Streaming 에러 HTTP/2 INTERNAL_ERROR

 

이전 포스팅에서 gRPC Streaming 처리방법에 대해서 알아봤습니다

2024.04.25 - [코딩/C#] - C# gRPC Streaming

 

그런데 대용량 데이터 전송시 Stream Server 에서 연결을 강제로 끊고 아래와 같은 오류가 발생되었습니다.

status(statuscode="internal",detail="Error reading next message, IOException: The request was aborted. Http2StreamException:The HTTP/2 server reset the stream. HTTP/2 error code 'INTERNAL_ERROR' (0x2)

확인해보니 몇 천건이면 상관없는데 10000건 이상의 데이터를 Stream 으로 전달하게 되면

연결이 끊어지고 데이터 전달이 되지 않았습니다.

 

MaxSendMessageSize, MaxReceiveMessageSize 등을 늘려 보았지만 소용없었고

deadline 을 적용해 봐도 안됨, Handler 를 이용해 봤지만 소용없음 등등 여러가지 시도해봤지만 

해결이 안되었습니다.


해결방법은 responseStream.WriteAsync() 로 데이터 전달하기전에

아래 코드를 넣어 WriteOptions 을 BufferHint 로 주면 해결됩니다.

responseStream.WriteOptions = new WriteOptions(WriteFlags.BufferHint);


위 옵션은 성능에 영향을 준다고 나오기는 하는데 성능보다 통신이 되는게 먼저라서...

성능에 얼마나 영향을 줄지는 지켜봐야겠습니다.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band