728x90
반응형
728x170

대용량 데이터 전송시 Stream 에서 연결을 끊어버리는 오류가 발생되었습니다.

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 으로 전달하게 되면 연결이 끊어지고 데이터 전달이 되지 않았습니다.
해결방법은
responseStream.WriteAsync() 로 데이터 전달하기전에 아래 코드를 넣어 WriteOptions 을 BufferHint 로 주면 해결됩니다.

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

MaxSendMessageSize, MaxReceiveMessageSize 등을 늘려 보았지만 소용없음
deadline 을 적용해 봤는데 소용없음
Handler 를 이용해 봤지만 소용없음
등등 여러가지 시도해봤지만 소용없음
해결책은 WriteOptions 을 건드리는 방법뿐인데 당최 어떤 의미인건지 모르겠네요 ㅜㅠ
성능에 영향을 준다고 나오기는 하는데 성능이야 안나와도 되는게 먼저니 ..
성능에 얼마나 영향을 줄지는 지켜봐야겠습니다.

728x90
반응형
그리드형
Posted by kjun

댓글을 달아 주세요