https://blog.roblox.com/2022/01/roblox-return-to-service-10-28-10-31-2021/
Roblox Return to Service 10/28-10/31 2021 - Roblox Blog
Starting October 28th and fully resolving on October 31st, Roblox experienced a 73-hour outage. We’re sharing these technical details to give our community an understanding of the root cause of the problem, how we addressed it, and what we are doing to p
blog.roblox.com
배경
- 로블록스는 하시코프 솔루션을 많이 사용한다.
- 로블록스 서비스 구성을 위해 Consul을 사용한다 (Service Discovery 등의 기능 제공)
문제 발생
- Vault의 성능 저하가 발생하고 Consul 서버의 CPU 부하가 높아졌다.
- 서비스 통신에 관여하는 Consul 클러스터 성능이 느려지면서 서비스간 통신에 문제가 발생했다.
- 문제 발생의 원인을 못 찾고 점점 서비스가 느려지더니, 서버 장애 발생
문제 경과
- 단순히 하드웨어 리소스 부족으로 생각하고 업그레이드를 수행 -> 실패
- Consul 클러스터에 트래픽을 차단하고, 클러스터를 백업함 -> 잠시 해결된 듯 보였으나, 장애 재발생
- 하드웨어 문제가 아니라는 결론 도달
- Consul 클러스터의 부하를 줄이기 위해, 필수가 아닌 리소스를 모두 비활성화, 서비스 상태 확인 빈도를 60초에서 10분으로 증가해봄 -> 실패
- 단순한 Consul 사용량 증가로 인해 문제가 발생한 것이 아니라는 결론 도달
- Consul 내부 분석 시작
- Consul에서 제공하는 스트리밍 기능을 활성화하면 높은 읽기 쓰기 부하에서 과도한 경합이 발생했다.
- 또한 로블록스 서버 장비를 구성하는 메모리는 NUMA 메모리 모델의 이중 소켓 아키텍처 였고, Consul의 스트리밍 설정은 단일 Go 채널에서 경합의 양을 악화 시켜 쓰기 중에 차단을 일으켜 효율성을 떨어뜨렸다.
해결 방법
- Consul의 스트리밍 기능을 비활성화 하고, 클러스터 내, 속도가 느린 리더를 유지하는 것을 방지하는 프로세스 생성
- 캐시 재배포........ -> 정상
만약 나였다면?
- 클러스터의 리소스 고갈이 발생하는 상황 파악
- 서버의 리소스 고갈이 발생하는 문제 발생 시
- 사용자의 접속이 급격히 증가했는지 확인 ( 급격히 증가했다면 단순 트래픽 증가로 인한 리소스 부족 가능성 높음 )
- 트래픽이 증가한 것이 아니라면, 자원을 많이 사용하고 있는 클러스터 및 서비스 확인
- 서비스와 관련된 솔루션 확인 ( 어떤 프레임워크를 쓰고, 구조가 어떻게 되어 있는 지, 최근 변경 사항이 있는 지 )
- 해당 서비스에서 CPU 부하가 늘어난 이유를 찾는다 ( 시스템이 많이쓰는 지, 일반 함수 실행에 많이 쓰는 지,I/O 부하 때문에 높은지 )
- 만약 I/O wait 수치가 높은 편이라면 -> 평소 대비 입출력 과다인지 확인, 디스크 사용률 확인 (디스크 문제?)
- 만약 System(커널모드) 콜 호출에 사용하는 CPU 사용량이 많다면 -> 프로세스 제어, 장치 관리, 파일, 네트워크 관리, 입출력 처리, 시간 관리 등 어떤 유형의 시스템 콜인지 분석 (OS 또는 커널 문제?)
- 위의 두 문제가 아니라면, 일반 함수 실행에 많은 CPU를 사용하고 있는 것 -> 어플리케이션 문제 (솔루션 문제?)
- 서비스 변경 사항과 CPU 부하가 늘어난 정보를 토대로 확인
배울 점
- 솔루션을 너무 신뢰하면 문제가 생길 수 있다라는 점
- 단서를 찾으면 여러가지 경우를 확인해보는 것
- GO 루틴 및 동시성에 대한 공부가 더 필요할 것 같다.
- 이중 소켓 아키텍처는 무엇이고, Consul의 스트리밍 설정은 어떤 알고리즘을 쓰길래, Go 경합성을 증가시키는 지?
- 영어 공부좀 해야할 듯......
728x90
반응형
'에러 및 이슈 간단 정리 > 테크 뉴스 및 트렌드 (링크)' 카테고리의 다른 글
[기술블로그탐방] 기술 부채를 줄이는 방법 (0) | 2022.04.05 |
---|