WEBBOOK CHAPTER

실무 스프링 배치 6: 26장. Lock·Deadlock·느린 Chunk

26장. Lock·Deadlock·느린 Chunk

느리다고 thread부터 늘리지 않는다. read/process/write timer, DB wait, pool pending, WAL·IO, downstream latency를 같은 시간축에 놓는다. processor CPU와 writer lock을 구분한다.

deadlock retry에는 최대 횟수, backoff, 전체 deadline과 idempotency가 필요하다. lock 순서를 통일하고 같은 seller·date가 여러 partition에 섞이지 않게 한다. 적절한 index가 없어 lock 범위가 넓어진 경우 병렬화가 장애를 키운다.

오래 RUNNING인 실행을 곧바로 restart하지 않는다. scheduler lease, pod, JobExecution lastUpdated, DB session을 확인한다. 기존 실행이 살아 있으면 두 실행이 같은 파일을 잡는다.