Incident Library

IL-0327 CircleCI · 2025-04-03database

워크플로 데이터베이스를 blue/green 으로 업그레이드한 뒤 워크플로 시작과 취소가 지연되고 실패했다

2025-04-03 22:08 UTC 부터 23:45 UTC 까지 CircleCI 고객은 워크플로와 작업을 시작하고 취소할 때 지연과 일부 실패를 겪었고 UI 에서 워크플로를 보기 어려웠다. 22:00 무렵 워크플로 서비스의 데이터베이스를 blue/green 배포로 업그레이드했다. 팀은 90초 미만의 지연 동안 데이터베이스 호출이 큐에서 10분 동안 재시도될 것으로 예상했다. 22:08 에 전환이 끝나고 쿼리가 처리되는 것을 확인했지만, 22:17 에 지연이 커지고 10분 재시도를 다 쓴 작업이 버려졌다.

22:30 에 워크플로 파드를 재시작해 모든 파드가 올바른 데이터베이스에 연결하게 했다. 22:35 에 공개 장애를 선언했다. 22:41 에 새 데이터베이스의 모든 쿼리가 디스크에서 읽히는 것을 보고 통계 테이블이 갱신되지 않았다고 판단했다. 팀은 곧바로 데이터베이스를 키우고 업무에 꼭 필요하지 않은 데이터베이스 작업을 껐다. 23:00 에 통계 테이블을 다시 만드는 동안 데이터베이스가 회복할 여유를 주려고 워크플로 서비스를 파드 하나로 줄였지만 성능은 나아지지 않았다. 23:19 에 옛 데이터베이스의 쓰기를 다시 켜고 옛 데이터베이스를 다시 주 데이터베이스로 되돌리기로 했다. 이 작업은 23:29 에 끝났다. 23:45 에 워크플로 큐가 정상 수준으로 돌아왔고 더 이상 오류가 보이지 않았다.

장애 뒤 조사에서 근본 원인이 밝혀졌다. 인덱스에 쓰이는 통계 테이블을 다시 만드는 analyze 작업이 너무 일찍 실행됐고, 같은 배포 안의 두 번째 메이저 버전 업그레이드가 그 통계를 다시 낡게 만들었다.

심각도
–
영향 범위
Starting and cancelling workflows and jobs had increased latency and some failures, and workflows were slow or hard to view in the UI, from 22:08 to 23:45 UTC
영향 사용자
CircleCI customers
지역
–
감지까지
9m
복구까지
1h 37m

증상

blue/green 전환은 22:08 UTC 에 끝났다. 22:17 에 워크플로 서비스의 지연이 커졌고, 10분 재시도를 다 쓴 작업이 버려지며 오류가 났다. 고객은 워크플로와 작업을 시작하거나 취소할 때 지연과 실패를 겪었고 UI 에서 워크플로를 보기 어려웠다.

팀은 업그레이드 중 90초 미만의 짧은 지연을 예상했다. 그동안 워크플로 서비스의 데이터베이스 호출이 큐로 가서 10분 동안 재시도되고, 큐는 업그레이드 중과 직후에 조금만 늘 것으로 봤다. 22:08 에 전환이 끝난 뒤 쿼리가 처리되는 것도 확인했다.

22:30 에 모든 파드가 올바른 데이터베이스에 연결하는지 확인하려고 워크플로 파드를 재시작했다. 22:41 에 새 데이터베이스의 모든 쿼리가 디스크에서 읽히는 것을 보고 데이터베이스 통계 테이블이 갱신되지 않았다고 판단했다.

23:00 에 워크플로 서비스를 파드 하나로 줄이자 예상대로 워크플로 큐가 쌓였지만 데이터베이스 성능은 나아지지 않았다.

증상 지연 시간 증가오류율 상승데이터베이스 과부하

원인

촉발
22:00 UTC 무렵 워크플로를 맡는 서비스의 데이터베이스를 blue/green 배포로 업그레이드했고, 22:08 에 전환이 끝났다.

감지

22:17 UTC 에 워크플로 서비스의 지연이 커지고 10분 재시도를 다 쓴 작업이 버려지며 오류가 나는 것을 확인했다.

조치

후속 조치

교훈

–

출처

참고 문서

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: 데이터베이스, 쿼리 플래너와 테이블 통계. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.