Incident Library

IL-0335 Stack Exchange · 2017-01-24database

주 SQL Server 의 bugcheck 로 Stack Exchange 네트워크가 읽기 전용이 됐다가 12분 동안 내려갔다

2017년 1월 24일 17:53 UTC 에 Stack Exchange 의 주 SQL Server 인 NY-SQL02 에서 SQL Server 프로세스가 bugcheck 를 일으켰고, 서버는 먼저 읽기 전용 상태가 됐다. Stack Exchange 는 SQL Server 의 자동 장애 조치를 허용하지 않는다. 대신 애플리케이션이 대기 SQL 서버에 읽기 전용으로 질의해 사이트를 살려 두는 방식을 쓴다. 하지만 버그 때문에 애플리케이션 수준의 장애 조치가 꺼져 있어서, 주 서버가 실패하자 Stack Overflow 와 나머지 Stack Exchange 네트워크가 완전히 내려갔다. 네트워크는 약 5분 동안 읽기 전용이었고 그 뒤 12분 동안 내려가 있었다.

NY-SQL02 의 SQL 서비스를 재시작하자 네트워크가 읽기 전용으로 돌아왔다. 팀은 SQL 상태를 점검한 뒤 사이트를 읽기·쓰기 모드로 되돌렸다. 메모리가 384GB 라서 메모리 덤프가 끝나기를 기다리지 않고 네트워크를 먼저 살렸다. 커밋되지 않은 트랜잭션이 롤백되면서 약 3.5초 분량의 데이터가 사라졌을 수 있다. 글을 쓴 시점에는 bugcheck 의 원인을 몰랐다. 로그는 불량 DIMM 가능성을 가리켰다. NY-SQL02 는 운영에서 빼 메모리 시험을 포함한 점검에 들어갔다. 평소 부하는 모두 NY-SQL01 이 받았다. 이 기회에 SQL 클러스터를 2016 SP1 CU1 로 올렸다.

심각도
–
영향 범위
The Stack Exchange network, including Stack Overflow, read-only for about 5 minutes and then offline for 12 minutes; about 3.5 seconds of uncommitted transactions may have been lost
영향 사용자
–
지역
–
감지까지
2m
복구까지
17m

증상

2017년 1월 24일 17:53 UTC 부터 Stack Exchange 네트워크가 약 5분 동안 읽기 전용으로 동작했다. 그 뒤 Stack Overflow 를 포함한 사이트 전체가 12분 동안 내려갔다.

주 SQL Server 인 NY-SQL02 에서 SQL Server 프로세스가 bugcheck 를 일으켰고, 처음에는 이 서버가 읽기 전용 상태가 됐다. Stack Exchange 는 SQL Server 의 자동 장애 조치를 쓰지 않는다. 대신 주 서버가 실패하면 애플리케이션이 대기 SQL 서버에 읽기 전용으로 질의해 사이트를 살려 두게 해 왔다. 그런데 버그 때문에 이 애플리케이션 수준의 장애 조치가 꺼져 있었다. 그래서 주 서버가 실패하자 사이트가 완전히 내려갔다.

문제를 알아채는 데 2분, 문제가 어디서 왔는지 찾는 데 5분, 서비스를 되살리는 데 10분이 걸렸다. 커밋되지 않은 트랜잭션이 롤백되면서 약 3.5초 분량의 데이터가 사라졌을 수 있다.

증상 쓰기 거부서비스 중단장애 조치 실패데이터 유실

원인

원인 unknown

구성 요소 데이터베이스
기여 요인 단일 장애점
촉발
주 SQL Server 인 NY-SQL02 에서 SQL Server 프로세스가 bugcheck 를 일으켰다.

감지

–

조치

후속 조치

–

교훈

–

출처

관련 사례

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

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

AI 도구와 스크립트용

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