startlink   4년 전

안녕하세요.

2019년 7월 27일 오후 5시 2분부터 7월 28일 오전 8시까지 서버가 다운된 사고가 발생했습니다.

이용에 불편을 드려서 죄송합니다.

최백준 드림

startlink   4년 전

서버가 다운된건 7/27 오후 5시 2분이었고, 이 시점을 기준으로 Amazon RDS(MySQL)에 엄청난 양의 connection(평소의 100배)이 생기기 시작했습니다.

마지막으로 웹 사이트 배포를 실행한건 7/27 새벽이었기 때문에, 웹 서버에는 아무런 변화가 없었습니다.

마침 UCPC 2019 예선이 대회가 진행 중이어서 이용자가 몰려서 그런것이라는 생각도 들 수 있지만, 보통 대회의 시작 시점에 가장 많은 트래픽이 몰리고, 대회 종료 시점이 가까워질수록 트래픽은 줄어드는 것이 일반적입니다. UCPC 대회도 이와 같은 트래픽 그래프를 보여줬습니다.

원인을 파악하기 위해 이것저것 시도를 해봤습니다. 서버에서 뭔가 하나를 수정하면 반영되는데는 30분 정도의 시간이 걸려서 매우 오래 걸렸습니다.

BOJ의 DB 서버 재부팅, DB 서버 인스턴스 변경, 웹 서버 인스턴스 변경, MySQL, PHP 파라미터 변경등의 모든 방법을 했으나 실패했습니다.

MySQL에 접속해서 연결된 양을 보고 싶었는데, 이미 연결이 너무 많아 timeout이 발생해 그것도 볼 수가 없었습니다.

모든 서버를 끄고 DB 서버를 켠 다음 Security Group을 하나씩 추가하던 중에 놀라운 사실을 발견했습니다.

contest.kakaocode.com에서 엄청난 연결을 요청하고 있는 것이었습니다. 아시다시피 BOJ는 2018년에 카카오코드페스티벌의 플랫폼을 제공한 적이 있고, 서버를 끄지않고 계속 켜놓고 있었습니다. 그런데, 저 사이트도 역시 오후 5시 2분까지는 정상적으로 접속이 가능했었습니다.

contest.kakaocode.com의 배포는 약 2달 전으로, BOJ에서 플랫폼을 제공하는 다른 대회를 배포하면서 동시에 진행했습니다. (배포 스크립트가 only boj, all 둘 밖에 없습니다)

마지막 배포를 2달 전에 한 사이트가 5시 2분을 기준으로 똑같은 문제를 일으켰다면 이건 제가 수정 및 추가한 소스의 문제가 아닙니다.

다른 실험을 이것저것 해본 결과 새로운 사실을 하나 알았습니다.

현재 BOJ는 Elastic Beanstalk을 이용해서 배포하고 있고, 베타 서버와 개발은 모두 EC2를 사용하고 있습니다. 다른 모든 서버를 끄고 베타 서버만 켠 상태로 접속을 하면 위에서 말한 connection 에러가 발생하지 않았습니다. 툴을 이용해서 동시 접속도 테스트해봤는데, 역시 예전처럼 매우 잘 돌아갔습니다.

베타 서버와 실 서버 모두 같은 EC2를 사용하고 있고, 같은 RDS에 접속하는 등 모두 같은데, 문제가 생긴다면 Beanstalk이 문제라 생각합니다.

현재는 베타 서버로 사이트를 운영하고 있는 상태로, 사용하는데는 별 문제가 없습니다. 서버비가 많이 나온다는 단점이 있지만, 이것은 저에게만 문제입니다.

AWS의 Beanstalk이 문제를 일으킨 것이 맞는 것 같고, 어제 5시 2분에 Beanstalk에 무슨 일이 있었는지 확인하고 말겠습니다.

startlink   4년 전

UCPC 대회의 운영에 큰 불편함을 끼치게 되어서 정말 죄송합니다.

0xdeadbeef   4년 전

도움이 될지 모르겠는데 어제 접속하다가
리다이렉션 횟수가 너무 많아서 접속이 안된다는 메세지를 보았습니다.

좋은 알고리즘 문제들 감사드립니다.

아직 잘 하진 못하는데 열심히 할거에요. 응원 해주세요 감사합니다.

startlink   4년 전

네 말씀하신게 서버 장애 때문에 생긴 일입니다.

clrmt   4년 전

백준님 이 사이트에서 업로드된 이미지들이 보이지 않습니다.

https://www.acmicpc.net/problem/1002

https://www.acmicpc.net/problem/1005

https://www.acmicpc.net/problem/1006

어제 사건의 여파인 것 같네요.

startlink   4년 전

네 이건 정상 운영되면 다시 수정될 예정입니다. 현재는 임시로 운영하고 있습니다.

sohnryang   4년 전

그럼 문제에 있는 이미지 외에 작동하지 않는 기능이 또 있나요?

79brue   4년 전

BOJ Slack에도 남겼었지만, 어제 아주 일시적으로 접속이 가능했었습니다.

하지만 그 뒤 리다이렉션 오류가 뜨며 다시 접속이 불가능해졌습니다.

startlink   4년 전

일시적으로 접속이 가능한건 기존에 미친듯이 증식한 connection이 하나 timeout이 발생했을 때 운 좋게 접속에 성공한 경우로 볼 수 있습니다.

댓글을 작성하려면 로그인해야 합니다.