IL-0552 CircleCI · 2025-01-21database
보관 데이터베이스의 저장 공간이 차서 CircleCI 워크플로 시작이 늦어지고 UI에서 워크플로가 잘 보이지 않았다
2025년 1월 16일에 CircleCI 의 보관 데이터베이스 안 함수 하나를 고친 코드 변경이 의도치 않게 로그 메시지를 대량으로 만들었고, 이 데이터베이스의 저장 공간이 예측보다 훨씬 빨리 찼다. 1월 21일 23시 UTC쯤 저장 공간이 거의 없다는 알림이 울렸다. 팀은 23시 9분에 블루/그린 배포를 멈춰 논리 복제 슬롯을 비웠지만 데이터베이스는 회복하지 않았다.
워크플로를 조율하는 서비스가 보관 서비스를 동기로 호출하기 때문에, 보관 데이터베이스가 용량 한계에 닿자 호출이 타임아웃되고 워크플로 서비스 전체가 느려졌다. 23시 26분부터 워크플로 대기열이 늘어 워크플로와 잡의 시작과 취소가 느려지고 UI에서 워크플로를 보기 어려워졌다. 거의 같은 시각에 요청량 알림이 따로 울려, 팀이 지연을 보관 데이터베이스 문제와 연결하는 데 시간이 걸렸다. 다른 팀이 23시 44분에 대기열을 처리하는 이벤트 소비자를 증설했고, 데이터베이스를 맡은 팀이 23시 55분에 읽기 복제본을 독립된 주 인스턴스로 승격했다. 0시 3분에 워크플로 대기열이 정상으로 돌아왔다.
같은 무렵 클라우드 사업자의 프로비저닝 엔드포인트에서 API 오류율이 올라 Linux 머신 잡이 뒤 단계의 대기열에 쌓였다. 요청은 0시 32분쯤 처리되기 시작했지만 몰린 요청량 때문에 속도 제한이 걸려 영향이 길어졌다. 대기열은 0시 56분에 정상 수준으로 돌아왔고, 추가 영향이 없음을 확인한 뒤 1시 26분에 장애를 종료했다. 사고 뒤 조사에서 함수 변경이 원인으로 밝혀졌고, CircleCI 는 그 함수를 고쳤다.
- 심각도
- –
- 영향 범위
- Starting and cancelling workflows and jobs on CircleCI was slow and the CircleCI UI had trouble showing workflows; Linux machine jobs then queued (Pipelines & Workflows and CircleCI UI)
- 영향 사용자
- CircleCI customers
- 지역
- –
- 감지까지
- –
- 복구까지
- 1h 6m
증상
2025년 1월 21일 23시 UTC쯤, 보관 데이터를 담는 데이터베이스 인스턴스의 남은 저장 공간이 거의 없다는 자동 알림이 울렸다. 23시 26분부터 워크플로 대기열이 늘면서 워크플로와 잡의 시작과 취소가 느려지고 UI에서 워크플로를 보기 어려워졌다.
워크플로를 조율하는 서비스는 보관 서비스를 동기로 호출한다. 보관 서비스의 데이터베이스가 용량 한계에 닿자 이 호출이 타임아웃되기 시작했고, 그 때문에 워크플로 서비스 전체의 성능이 떨어졌다.
팀은 처음에 논리 복제 슬롯이 원인일 수 있다고 보고 23시 9분에 이 데이터베이스의 블루/그린 배포를 멈춰 슬롯을 비웠다. 그러나 데이터베이스는 회복하지 않았다.
팀은 워크플로 지연을 곧바로 보관 데이터베이스 문제와 연결하지 못했다. 거의 같은 시각에 요청량과 관련된 다른 알림이 따로 울렸기 때문이다. 그 문제가 해결된 뒤에도 대기열이 계속 늘자 다른 팀이 워크플로 쪽을 조사하기 시작했다.
워크플로 대기열은 0시 3분에 정상으로 돌아왔지만, 거의 같은 때부터 Linux 머신 잡이 뒤 단계의 대기열에 쌓이기 시작했다. 클라우드 사업자에 보낸 인스턴스 프로비저닝 요청이 오류를 냈고, 요청이 다시 처리되기 시작한 뒤에도 몰린 요청량 때문에 속도 제한에 걸렸다.
원인
- 촉발
- 1월 16일에 보관 데이터베이스의 함수 하나를 고친 코드 변경이 의도치 않게 로그 메시지를 지나치게 많이 만들어 냈다.
감지
23시쯤 보관 데이터베이스의 남은 저장 공간이 거의 없다는 자동 알림이 울렸다. 같은 시각에 요청량 알림이 따로 울려 팀은 워크플로 지연을 곧바로 이 문제와 연결하지 못했다. 그 알림이 해결된 뒤에도 대기열이 늘자 다른 팀이 조사에 나섰다.
조치
- 23시 44분에 워크플로 대기열을 처리하는 이벤트 소비자를 증설했다.
- 23시 55분에 문제가 난 보관 데이터베이스의 읽기 복제본을 독립된 주 인스턴스로 승격했다.
후속 조치
- 로그 메시지를 지나치게 많이 만들던 데이터베이스 함수를 고쳤다.
- 워크플로 보관 호출의 재시도 정책에 최대 지속 시간을 두어 기본 타임아웃보다 일찍 실패하게 하고, 보관 서비스에 문제가 생겨도 워크플로 서비스가 받는 영향을 줄인다.
- 장기적으로 워크플로 보관 과정을 이벤트 기반 방식으로 바꿔 두 서비스를 떼어 놓는다.
- 데이터베이스에 예측 모니터링과 이상 탐지 모니터링을 더해, 이상한 움직임이 위험 수준에 닿기 전에 알림을 받는다.
교훈
보관 데이터베이스의 문제를 알리는 알림은 울렸지만, 데이터베이스가 예측보다 훨씬 빨리 차서 고객 영향이 나기 전에 대응할 시간이 거의 없었다. 워크플로 서비스가 보관 서비스를 동기로 호출하기 때문에 보관 쪽 문제가 워크플로 전체의 지연으로 번졌다.
출처
- https://status.circleci.com/incidents/ym5vldzgvxv5 · official-status · 보관본
관련 사례
같은 원인 · 공통 데이터베이스, CI 시스템
IL-0324External Storage 데이터베이스 클러스터에 과부하가 걸려 mw-api-int, mw-parsoid, mw-jobrunner 의 지연과 데이터베이스 오류가 늘었다Wikimedia Foundation · 2025같은 원인 · 공통 데이터베이스, CI 시스템
IL-0136Sweden Central 리전에서 내부 서비스 배포가 캐시를 비워 메타데이터 백엔드에 평소 20배의 트래픽이 몰렸고, 데이터베이스 연결에 기대는 헬스 체크가 인스턴스를 계속 재시작시켜 Azure OpenAI 요청이 6시간 가까이 실패했다Microsoft Azure · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0234내부 배포 자동화가 개발용 애플리케이션을 고객의 Managed Kubernetes 클러스터들에 잘못 설치해 컨트롤 플레인 연결과 쿠버네티스 기능에 문제가 났다IONOS Cloud · 2026같은 원인 · 공통 CI 시스템
IL-0510MIT Learn 운영 RDS PostgreSQL 의 저장 공간이 임시 파일로 가득 차 learn.mit.edu 가 세 시간 동안 503 과 504 를 냈다MIT Open Learning · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0547Buildkite 의 Agent API, REST API, GraphQL 이 annotations 테이블 쿼리 타임아웃으로 4시간 가까이 저하됐다Buildkite · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0307Supabase us-east-1 에서 Supavisor 2.0 업그레이드 뒤 Postgres 연결 풀러가 테넌트 약 80% 의 연결을 끊었다Supabase · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0523TANF-app 의 운영 배포가 PostgreSQL 마이그레이션 실패로 두 달 동안 막힘U.S. Department of Health and Human Services · 2023같은 원인 · 공통 데이터베이스
IL-0567쿠키런: 오븐브레이크의 패키지 매출 랭킹 기능을 배포한 뒤 Aurora MySQL CPU가 100%에 이르러 유저가 게임에 접속하지 못했다Devsisters · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0524인덱스를 다시 만드는 마이그레이션이 운영에서 Transactions 테이블을 잠가 Open Collective 서비스가 느려짐Open Collective · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0467Prow 빌드 클러스터의 노드 업그레이드 중 Boskos 파드가 크래시 루프에 빠져 GCP 프로젝트가 필요한 테스트 작업이 9시간 넘게 모두 실패했다Kubernetes project · 2019같은 원인 · 공통 CI 시스템
같은 원인 · 공통 CI 시스템
같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0552
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0552/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.