Incident Library

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 머신 잡이 뒤 단계의 대기열에 쌓이기 시작했다. 클라우드 사업자에 보낸 인스턴스 프로비저닝 요청이 오류를 냈고, 요청이 다시 처리되기 시작한 뒤에도 몰린 요청량 때문에 속도 제한에 걸렸다.

증상 지연 시간 증가간헐적 타임아웃로그 폭증노드 디스크 가득 참클라우드 API 호출 한도 소진

원인

촉발
1월 16일에 보관 데이터베이스의 함수 하나를 고친 코드 변경이 의도치 않게 로그 메시지를 지나치게 많이 만들어 냈다.

감지

23시쯤 보관 데이터베이스의 남은 저장 공간이 거의 없다는 자동 알림이 울렸다. 같은 시각에 요청량 알림이 따로 울려 팀은 워크플로 지연을 곧바로 이 문제와 연결하지 못했다. 그 알림이 해결된 뒤에도 대기열이 늘자 다른 팀이 조사에 나섰다.

조치

후속 조치

교훈

보관 데이터베이스의 문제를 알리는 알림은 울렸지만, 데이터베이스가 예측보다 훨씬 빨리 차서 고객 영향이 나기 전에 대응할 시간이 거의 없었다. 워크플로 서비스가 보관 서비스를 동기로 호출하기 때문에 보관 쪽 문제가 워크플로 전체의 지연으로 번졌다.

출처

관련 사례

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

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

AI 도구와 스크립트용

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