OkHttp connection was leaked - Connection Pool

유정현·2024년 2월 17일
0

OkHttp 라이브러리를 사용해 통신을 구현하다 다음과 같은 에러가 발생했다.

connection to http://10.0.2.2/ was leaked. Did you forget to close a response body?

response body를 close 해달라고 한다. connection을 반납해야하는데 하지 않아서 사용 가능한 connection 자원이 줄어들어 누수(leaked) 되었다는 것이다. 이를 해결하기 위해 response.close() 코드를 추가하면 된다.

왜 Connection Leaked 오류가 발생했는가

OkHttp 라이브러리는 Connection Pool을 이용하도록 구현되어 있다. 이는 서버에 request를 보낼 때 매번 연결하지 않고 Connection Pool을 이용해 재사용하는 것이다.
하지만 나는 connection을 반납하지 않아 계속 요청하게 되어서 다음과 같은 상황이 발생한 것 같다.

Connection Pool

Connection Pool은 웹 컨테이너(WAS)가 실행되면서 DB와 미리 연결 해놓은 객체들을 pool에 저장해둔다. 이후 client에서 reqeust가 오면 connection을 빌려주고 반납받는 방식으로 진행된다.

Connection Pool에 있는 Connection 객체는 DB와 연결되어 있다. DB Driver을 통해 이미 있는 Connection을 참조해 사용하게 된다.

0개의 댓글

관련 채용 정보