HTTP 커넥션 풀
- DB 커넥션 풀이 DB 연결에 걸리는 시간을 줄여 성능을 높이는 것처럼
- HTTP 연결도 커넥션 풀을 사용하면 연결 시간 줄일 수 있어 응답 속도 향상에 도움이 된다
- HTTP 커넥션 풀을 사용할 때는 다음 3가지를 고려
- HTTP 커넥션 풀 크기
- 풀에서 HTTP 커넥션 가져올 때까지 대기하는 시간
- HTTP 커넥션을 유지할 시간(keep alive)
- HTTP 커넥션 풀 사용시 가장 먼저 고려해야되는건 풀의 크기다
- 풀의 크기는 연동할 서비스의 성능에 따라 결정해야함
- 무작정 풀 크기 늘리면 순간적으로 트래픽 몰릴때 연동 서비스의 응답시간이 급격히 느려질 수 있음
- 그러니 풀 크기 결정할 때는 연동 서비스의 처리능력도 고려
- 두 번째는 대기 시간
- 예를 들어, HTTP 커넥션 풀 크기가 10이라면 동시에 11개 외부 연동 요청이 올때 10개는 실행되고 1개는 커넥션 반환까지 대기함
- 대기 시간이 길어지면 전체 응답시간도 길어지므로 대기 시간은 수 초 이내 짧게 ㄱ
- 1~5초가 적당. 너무 짧으면 일시적 트래픽 증가에 대처 못하고 너무 길면 전체 응답 시간 길어질 수 있음
- 세 번째는 커넥션 유지 시간
- 커넥션은 무한정 유지되지 않는다
- 연동 서비스가 일정 시간 동안만 커넥션 유지한 뒤 연결 끊는 경우도 있다
- 끊어진 커넥션을 사용하면 에러가 발생하므로 연동 서비스에 맞춰 유지 시간 적절히 해야됨
- 예를들어, HTTP/1.1 에선 서버가 Keep-Alive 헤더로 연결 유지 시간 지정하고, 이 시간 지나면 서버는 연결을 끊는다.