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
,