Spring Batch Chunk Size, Skip/Retry, Listener 구성 시 주의사항 정리

1. Spring Batch에서 Chunk Size 1과 1000의 성능 차이 Chunk Size는 Spring Batch 성능에 직접적인 영향을 주며, 특히 chunk=1과 chunk=1000은 속도 차이가 큽니다. 일반적으로는 chunk size를 100 ~ 1000 사이로 설정하는 것이 적절하며, 성능과 메모리 사용량의 균형을 고려해야 합니다. 2. Skip과 Retry를 함께 설정했을 때 우선순위는? Spring Batch에서는 retry가 우선입니다. 더 읽기

EKS CronJob Pending 현상: “Preemption is not helpful for scheduling” 원인 분석

문제 현상 EKS 환경에서 특정 CronJob 실행 시 다음과 같은 메시지와 함께 Pod가 Pending 상태에 머무르며 일정 시간 이후에야 실행되는 현상이 발생했습니다: 원인 분석 이 메시지는 Kubernetes 스케줄러가 다음과 같은 조건 중 하나 이상으로 인해 Pod를 즉시 스케줄하지 못했음을 의미합니다: 1. 리소스 부족 2. 스케줄 조건 미충족 (Affinity, Toleration 등) 더 읽기

Oracle 연결 오류: SQLRecoverableException – Invalid Operation, NOT Connected

1. 오류 메시지 요약 2. 발생 원인 3. 자주 발생하는 상황 4. 해결 방법 4.1 HikariCP 설정 강화 주의: max-lifetime은 DB의 세션 만료 시간보다 짧게 설정해야 합니다. 4.2 Oracle DB 세션 타임아웃 확인 4.3 운영 상 참고사항 5. 결론 해당 오류는 커넥션 풀에서 이미 종료된 커넥션을 닫는 과정에서 흔히 발생하는 더 읽기

Spring Batch Tasklet 트랜잭션 내 개별 항목 실패 시 커넥션 누수 방지 방법

문제 요약 Tasklet 내부에서 루프를 돌며 개별 항목을 처리할 때, 예외가 발생해도 catch 블럭 내에서 로그만 찍고 다음 항목으로 진행하는 방식은 커넥션 반환이 제대로 되지 않아 HikariCP 커넥션 풀에서 누수가 발생할 수 있음. 개선 방안 예제 코드 예외 발생 시 명시적 커넥션 반환 효과