Spring Batch Tasklet에서 slave DB를 여러 번 호출할 때 커넥션은 각각 반환되는가?

🔹 질문 시나리오 Spring Batch Tasklet 안에서 slaveMapper를 사용하는 다음 코드처럼: slaveTxSupport.read(() -> slaveMapper.selectSomething());slaveTxSupport.read(() -> slaveMapper.selectAnotherThing()); 이 경우: 이 궁금증에 대한 답을 정리합니다. 🔍 결론 요약 항목 설명 TransactionTemplate.read(…) 호출마다 트랜잭션 생성됨 ✅ 맞습니다 각 트랜잭션은 독립적인 커넥션 사용 ✅ 맞습니다 첫 번째 호출이 끝난 시점에 커넥션 반환되는가 ✅ 반환됨 더 읽기

Spring Batch에서 slave DB 커넥션 반환 문제와 MyBatis + Hikari 트랜잭션 실전 가이드

🔹 문제 인식 🔹 핵심 원인 🔹 해결 방법 ✅ 1. TransactionTemplate으로 slave 트랜잭션 분리 List<Data> list = slaveTxSupport.read(() -> slaveMapper.selectByCondition(paramA, paramB)); ✅ 2. chunk 방식에서 ListItemReader에 적용 가능 @Bean@StepScopepublic ListItemReader<Entity> reader() { return new ListItemReader<>( slaveTxSupport.read(() -> mapper.selectList(param)) );} ✅ 3. 커넥션 반환 여부 확인 🔹 MyBatis Interceptor에서 커넥션 더 읽기

Spring Batch에서 다중 DataSource 환경에서의 커넥션 누수 방지와 안정적인 트랜잭션 처리 방법

🔹 문제 배경 대규모 배치 시스템에서 master/slave로 분리된 DB 환경을 사용하는 경우,하나의 Step 내에서 slave로부터 읽고, master에 쓰는 구조가 필요하다.그러나 잘못된 트랜잭션 구성으로 인해 slave의 커넥션이 반환되지 않고 누수(leak)되는 문제가 발생할 수 있다. 🔹 해결 전략 🔹 핵심 코드 예시 ① 트랜잭션 분리용 유틸 컴포넌트 @Componentpublic class SampleSlaveTransactionSupport { private 더 읽기

JVM Heap 지정 후에도 OutOfMemoryError가 발생하는 이유

문제 요약 Pod에 10Gi 제한 설정 및 JVM에 -Xms4g -Xmx6g 설정을 했음에도 불구하고 heap 메모리 부족으로 OOM 발생 원인 분석 해결 방안 💡 일반적으로 다음 비율이 안전: Memory Limit 최대 Xmx 권장 값 (안전 범위) 10Gi -Xmx7g 또는 -Xmx8g 16Gi -Xmx12g 정도까지 20Gi -Xmx16g까지도 가능 🔧 추천 세팅 (10Gi 제한 더 읽기

Spring Batch Tasklet에서 예외 발생 시 Slave 커넥션 반환 실패 원인 분석

문제 요약 Spring Batch Tasklet 내부에서 슬레이브(readOnly) DataSource를 통해 조회를 수행 중 예외 발생 시, PlatformTransactionManager의 rollback 처리 후 커넥션이 반환되지 않는 문제가 발생하였습니다. 원인 분석 개선 방안 또는 명시적 반환 방식:

브라우저 CORS 오류 해결: jsPDF CDN 로드 시 발생하는 문제와 올바른 사용법

jsPDF 사용 시 발생하는 CORS 오류와 해결 방법 외부 라이브러리인 jsPDF를 활용해 PDF 파일을 생성하려 할 때, 다음과 같은 CORS 오류가 발생한 경험이 있으신가요? 이 오류는 단순히 스크립트를 잘못 불러온 문제가 아니라, 브라우저의 보안 정책(CORS 정책)에 의해 외부 스크립트 로딩 방식이 잘못되었을 때 발생합니다. 🔍 오류 원인 분석 브라우저는 보안을 더 읽기

Kubernetes CronJob 실패 원인 분석 및 해결: [BackoffLimitExceeded] 에러 대응법

Kubernetes CronJob 실행 실패: [BackoffLimitExceeded] 원인과 해결 💡 문제 현상 Rancher UI 또는 kubectl describe job 명령어를 통해 아래와 같은 메시지가 확인됨: [BackoffLimitExceeded] Job has reached the specified backoff limit 🔍 원인 분석 🧪 디버깅 접근 kubectl run debug-batch –rm -it –image=123456789012.dkr.ecr.region.amazonaws.com/sample-image:tag — bash ✅ 해결 방법 1. Pod 삭제 더 읽기

Spring Batch 작업을 Kubernetes CronJob으로 병렬 처리할 때의 고려사항과 커넥션 오류 대응 전략

✅ 1. Spring Batch를 Kubernetes CronJob에서 병렬로 실행하려는 시나리오 ✅ 2. HikariCP 경고: “Apparent connection leak detected” ✅ 3. MyBatis 쿼리가 길어질 때 INSERT 타임아웃 처리 @Options(timeout = 5)void insertMyData(@Param(“list”) List<MyDto> list); ✅ 4. 커넥션 오류 예외 예시 (Unknown thread id) ✅ 5. 기존 Step을 Partitioning Step으로 전환할 수 있는가?

EKS Kubernetes CronJob의 노드 분산 원리: 스케줄러 점수 기반 배치 완전 이해하기

✅ 본문 요약 (개요 흐름) 💡 핵심 질문 EKS CronJob은 LB가 없이 어떻게 노드에 분산되는가?스케줄러는 어떤 기준으로 점수를 계산해 Pod을 배치하는가? ✅ Kubernetes 스케줄러의 2단계 배치 알고리즘 ✅ 점수 산정에 사용되는 주요 요소들 기준 설명 preferred nodeAffinity 특정 라벨 가진 노드를 선호 → 점수 +10~+100 podAntiAffinity 동일한 app의 Pod이 있으면 더 읽기