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초 분량의 데이터가 사라졌을 수 있다.
원인
- 촉발
- 주 SQL Server 인 NY-SQL02 에서 SQL Server 프로세스가 bugcheck 를 일으켰다.
감지
–
조치
- NY-SQL02 의 SQL 서비스를 재시작해 네트워크를 읽기 전용으로 되살렸다.
- SQL 상태를 점검한 뒤 사이트를 읽기·쓰기 모드로 되돌렸다.
- 메모리가 384GB 라서 메모리 덤프가 끝나기를 기다리지 않고 네트워크를 먼저 살렸다.
- NY-SQL02 를 운영에서 빼 메모리 시험을 포함한 점검에 들어갔다. 평소 부하는 모두 NY-SQL01 이 받게 했다.
- 이 기회에 SQL 클러스터를 2016 SP1 CU1 로 올렸다.
후속 조치
–
교훈
–
출처
- https://stackstatus.net/post/156407746074/outage-postmortem-january-24-2017 · official-status · 보관본
관련 사례
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0335
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0335/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.