적용할 문제

graceful shutdown에서 바꿀 결과와 유지할 기존 동작을 한 문장씩 적습니다. server가 새 request를 받지 않은 뒤 active request와 background task가 종료 유예 안에 끝나고 connection pool이 닫혀야 합니다.

선택의 기준

heap 사용량과 열린 file·socket·timer·listener를 분리합니다. 작업이 끝난 뒤에도 handle 수가 기준선으로 돌아오지 않는지 확인합니다. 현재 version의 공식 문서와 실제 설정을 확인하고 대표·경계·실패 사례를 준비합니다. Actuator metric, trace, thread dump, Hikari pool, transaction과 configuration property source를 확인한다.

순서 할 일
1 수정 전 결과와 되돌릴 기준 저장
2 핵심 사실과 맞닿은 한 곳만 변경
3 같은 입력으로 수정 전후 비교

작은 적용과 확인

자원을 만든 코드가 성공·실패·취소 경로 모두에서 닫도록 수명주기를 한곳에 둡니다. timeout과 finally·cleanup을 짝으로 관리합니다. proxy와 transaction 경계를 명확히 하고 외부 호출을 긴 DB transaction 밖으로 옮기며 설정을 타입으로 검증한다. 예상과 다르면 변경을 더 얹지 말고 처음 달라진 값으로 돌아갑니다. 통합 테스트와 부하 테스트에서 pool, lock, p99, graceful shutdown과 오류 응답 계약을 확인한다. 정상 완료, 중간 오류와 취소를 반복한 뒤 열린 handle·descriptor·task 수가 기준선으로 돌아오고 다음 작업이 정상 실행되는지 확인합니다.

공식 문서와 적용 범위

문서의 기본값과 동작은 version에 따라 달라질 수 있습니다. 현재 version, 실제 적용 설정, 자원 제한과 운영 환경에서 다시 확인합니다.