페미위키가 얼마나 떠 있었는지, 그리고 떠 있지 못했을 때 무슨 일이 있었는지입니다. 지금 페미위키를 이용할 수 있는지는 status.femiwiki.com에서 확인할 수 있습니다. 날짜와 시간은 한국 시간입니다.
사고
최근 것부터 적습니다. 제목을 누르면 보고서 전문으로 갑니다.
10월 4일 0시 22분부터 1시 15분까지 웹 서버와 PHP 컨테이너를 네 번 교체했고, 교체할 때마다 1분 남짓 동안 캐시에 없는 문서를 연 이용자가 502나 503을 받았습니다. 교체 네 번에서 나간 오류는 742건입니다. 새 PHP 워커가 1초에 하나씩만 늘어 요청을 받지 못했고, 새 웹 서버는 요청 제한 기록을 넘겨받지 못해 크롤러를 막지 못했으며, 옛 웹 서버는 처리하던 요청을 마치지 못하고 꺼졌습니다. 세 가지를 모두 고친 뒤 9시 46분 교체에서는 오류가 한 건도 나가지 않았습니다.
10월 3일 9시 2분부터 18시 8분까지 페미위키 첫 주소(https://femiwiki.com/)를 열면 빈 화면만 보였고, 문서 이름의 대소문자나 밑줄을 고쳐 넘겨주는 주소도 빈 화면이 되었습니다. 웹 서버의 캐시 모듈이 본문 없는 응답을 내보내지 않게 바뀌었는데, MediaWiki가 다른 주소로 넘겨주는 응답이 본문 없는 응답이었습니다. 문서 주소로 바로 들어온 이용자는 영향을 받지 않았습니다. 캐시 모듈을 고쳐 18시 8분에 배포하여 복구되었습니다.
10월 3일 2시 26분부터 3시 10분까지 PHP가 만드는 요청 대부분이 503이나 502로 끝났고, 2시 30분부터 몇 분 동안은 캐시에 없는 문서를 거의 열 수 없었습니다. 이 동안 503이 8,001건, 502가 1,027건 나갔습니다. 여러 주소에 퍼진 크롤러가 캐시되지 않는 문서 도구를 훑어 php-fpm 워커를 모두 차지했고, PHP 8.3으로 올리면서 커진 대기열 때문에 웹 서버가 PHP를 죽은 것으로 판단했습니다. 크롤링이 잦아들며 저절로 회복했고, 7시 7분에 대기열 상한과 속도 제한을 배포했습니다.
9월 30일 15시 39분부터 16시 34분까지 php-fpm 워커가 모두 점유되어, 캐시에 없는 문서와 로그인, 편집, 특수 문서처럼 PHP가 만드는 요청이 수십 초씩 기다렸습니다. 이 동안 PHP로 간 요청 30,367건 가운데 23,087건이 10초 넘게 걸렸고 502와 503이 688건 나갔습니다. 캐시에 있는 문서는 1초 남짓에 나갔습니다. 크롤러가 캐시되지 않는 빨간 링크와 특수:가리키는문서를 훑은 것이 원인이었고, 로그인하지 않은 이 요청들을 사이트 전체에서 한데 세는 속도 제한을 16시 34분에 배포했습니다.
9월 25일 6시 2분부터 6시 6분까지 Route 53의 특수:빈문서 상태 검사가 다섯 번 연달아 실패했고, 그 5분 동안 페미위키 이용이 불가했습니다. php-fpm 워커가 모두 점유되어 요청이 처리되지 못했습니다. 컨테이너는 재시작되지 않았고 OOM도 없었으며, 이 시간대 가용 메모리는 가장 낮을 때도 373 MiB였습니다. 메모리가 아니라 워커가 말라붙은 사고입니다. 대기열은 6시 19분에 저절로 비었습니다. 7시 33분에 캐시 용량 문제를 고치고, 8시 8분에 사이트 전체 상한을 10분에 1,600건으로 내렸습니다.
9월 24일 16시 5분부터 16시 16분까지 11분 동안 페미위키가 느렸습니다. 응답의 95%가 30초에서 54초 걸렸고, 502가 27건 나갔습니다. 읽기는 대체로 성공해서 같은 10분 동안 200 응답이 4,364건 나갔고, 페미위키:대문 상태 검사는 실패하지 않았습니다. 16시 19분에 사이트 전체 상한을 10분에 3,000건에서 2,000건으로 내렸습니다.
9월 23일 22시 30분부터 24일 8시 47분까지 크롤러가 몰고 온 부하와 그것을 막으려던 조치가 차례로 이용자에게 닿았습니다. 앞의 67분 동안에는 로그인과 편집, 특수 문서처럼 PHP가 직접 만드는 요청이 자주 실패했습니다. 그 가운데 36분 동안 특수:빈문서 상태 검사가 실패했고, 서버는 502와 503을 2,689건 냈습니다. 같은 동안 200 응답도 33,552건 나갔고 페미위키:대문 검사는 한 번도 실패하지 않았으므로 비 로그인 요청은 대개 성공했습니다. 23시 52분 배포로 5xx는 멎었지만, 그때 넣은 속도 제한이 크롤러와 함께 로그인하지 않은 사람도 막았습니다. 이 상태는 24일 8시 47분에 상한을 올릴 때까지 이어졌습니다. 비 로그인 검색, 차이, 옛 판, 역사 요청을 사이트 전체에서 한데 세고, 상태 검사를 통과한 서버가 없어도 읽기 요청은 응답하는 서버로 보내게 고쳤습니다. 사람까지 막던 상한은 24일 8시 47분에 10분에 1,500건으로 올렸습니다.
9월 21일 12시 15분부터 23시 3분까지 10시간 48분 동안 페미위키를 이용할 수 없었습니다. 처음에는 캐시를 거치지 않는 요청만 503이었고, 따라서 읽기는 되는데 로그인과 편집이 되지 않았습니다. 13시 5분부터는 캐시에서 나가던 대문까지 503이 되어 아무것도 열리지 않았습니다. PHP를 띄우기 전에 표시 파일을 지우게 고치고, 성공한 응답이 줄면 30분마다 다시 울리는 경보를 더했습니다.
8월에는 특수 문서 요청이 자주 실패했습니다. 하루 평균이 9할에 못 미친 날이 스무 날이고 그중 나흘은 절반에도 못 미쳤습니다. 대문은 내내 괜찮았으니 읽기는 됐고, 로그인과 편집이 느리거나 실패했습니다. 1일, 13일, 21일, 31일이 특히 나빴습니다. 이 달에 고친 것은 남아 있지 않습니다.
4월 11일 새벽 2시대부터 5시대까지 세 시간 남짓 페미위키가 응답하지 않았습니다. 3시와 4시에는 대문 요청까지 한 건도 성공하지 못했습니다. 대문은 캐시에서 나가므로, 그것이 실패했다는 것은 서버가 아예 죽어 있었다는 뜻입니다. 같은 시간에 방문도 끊겼습니다. 배포나 설정 변경 없이 돌아왔고, 원인을 몰라 고친 것은 없습니다.
12월 7일 07시부터 11일 02시까지 91시간 동안 사이트가 응답하지 않았습니다. 원인은 확인하지 못했습니다. 돌아올 때 배포나 설정 변경은 없었고, 손으로 재시작했거나 저절로 풀린 것으로 보입니다.
11월 7일 7시부터 8일 11시까지 28시간 동안 로그인과 편집이 되지 않았습니다. 두 달 전과 같은 모양으로, 비 로그인 요청은 캐시에서 나가 멀쩡했고 PHP가 직접 만들어야 하는 편집이나 특수 문서 요청이 불가했습니다. 7일 11시부터 8일 9시까지는 거의 한 건도 성공하지 못했습니다. 8일 0시대에 크롤러를 막는 대역을 늘리고 차단 응답을 403으로 바꿨지만, 돌아온 것은 11시라 그것으로 고쳐졌는지는 분명하지 않습니다.
9월 13일 4시부터 16일 22시까지 로그인과 편집이 되지 않거나 몹시 느렸습니다. 대문은 캐시에서 나가 내내 멀쩡했으므로 읽기만 하는 방문자는 대개 몰랐을 것입니다. 13일 4시부터 10시까지는 특수 문서 요청이 거의 다 실패했고, 그 뒤로는 절반쯤만 성공하는 상태가 사흘 이어졌습니다. 16일 저녁에 워커 최대치를 20에서 30으로 올리고 차단할 대역을 환경 변수로 받도록 고쳤고, 그 작업이 끝난 22시에 돌아왔습니다.
7월 한 달 동안 인스턴스가 주에 한 번꼴로 멈췄습니다. 멈추면 사이트뿐 아니라 ssh도 받지 않아 안에서 무슨 일이 벌어지는지 볼 수 없었습니다. 21일 23시에는 루아 프로세스 여럿이 한꺼번에 코어 덤프를 남겼고, 8월 1일에도 같은 일이 되풀이됐습니다(femiwiki#364). 이슈는 9월에 닫혔지만 무엇을 고쳤는지는 남아 있지 않습니다.
7월 30일 7시부터 17시까지 열 시간 동안 브라우저가 페미위키를 막았습니다. 인증서가 만료됐는데 Caddy가 새 것을 받지 못한 탓입니다. 갱신을 하려면 femiwiki.com 영역에 임시 TXT 레코드를 넣어야 하는데, 그 값을 읽는 데서 문법 오류가 났습니다(femiwiki#343). 인증서를 새로 받으면서 돌아왔지만, 무엇을 고쳐서 받게 됐는지는 남아 있지 않습니다.
7월 2일과 3일에 걸쳐 네이버와 Bing의 크롤러가 몰려들어 접속이 되지 않거나 응답이 느렸습니다. 그때 낸 공지는 전날 23시경부터 세 시간쯤 그랬다고 적고 있습니다. 두 크롤러와 PetalBot을 막고, 옛 판을 보는 주소를 잠시 닫고, EBS의 iops와 처리량을 올려 넘겼습니다. 8월 4일에 같은 일이 다시 일어났습니다(femiwiki#282).
6월에는 이삼일에 한 번씩 워커 수가 늘어난 채로 줄지 않았습니다. 최대치인 20개를 채우고 나면 새 요청은 기다리다 타임아웃됐습니다. 데이터베이스를 많이 읽는 특수 문서를 한 번 열면 워커가 불어나는 것이 확인됐고, 그때 MySQL은 디스크에서 몇 기가바이트씩 읽고 있었습니다. 특수:내영향을 끄고 스왑을 지우고 MiserMode를 잠시 켜 봤지만, 증상은 7월까지 이어졌습니다.
5월 16일 15시 47분부터 16시 5분까지 사이트가 느렸고, 19일에는 12시부터 13시 25분까지 헬스 체크가 실패했습니다. 16일은 워커 컨테이너가 스스로 재시작하며 돌아왔고, 19일은 yum-cron을 멈추고 워커를 재시작한 뒤 돌아왔지만 그것이 고친 것인지는 분명하지 않습니다.
5월 4일 14시 51분부터 16시 26분까지 1시간 35분 동안 서비스가 멈췄습니다. MySQL과 Caddy, EBS 볼륨을 붙여 주는 CSI 플러그인이 함께 죽었습니다. 되살리면서 Parsoid를 빠뜨려 시각편집기는 그보다 늦게 돌아왔습니다(femiwiki#249). 죽은 것들을 되살린 것 말고 따로 고친 것은 남아 있지 않습니다.
4월 23일부터 열흘 남짓, 하루에도 몇 번씩 사이트가 멈췄다 돌아오기를 되풀이했습니다. 워커가 하나씩 늘어 최대치인 20개를 채우고 나면 5xx만 나왔고, 대개 손으로 컨테이너를 내렸다 올려야 풀렸습니다. 워커의 메모리 한계를 올리고 request_terminate_timeout을 넣어 고쳤습니다.
4월 13일과 14일에 걸쳐 Caddy가 메모리 부족으로 거듭 죽었습니다. 캐시를 담아 두는 mwcache가 BadgerDB를 메모리 모드로 쓰고 있어서, 캐시가 쌓이는 만큼 메모리도 끝없이 늘었습니다. 14일 7시 37분에 죽은 것이 마지막이고, 그 뒤에 캐시 저장소를 Ristretto로 바꿨습니다(femiwiki#242).
5월 11일 새벽 5시경부터 10시 56분까지 접속이 되지 않았습니다. EBS 볼륨을 st1에서 gp2로 바꾼 뒤 버스트 잔액이 줄기 시작했고, 디스크를 많이 쓰던 카산드라가 그것을 바닥냈습니다. 미디어위키는 데이터베이스에 연결하지 못했고 5시에 도는 백업과 트윗봇은 제대로 끝난 반면 6시 랭킹봇은 돌지 않았습니다. 10시 56분에 카산드라를 내려 잔액을 되살렸습니다.
4월 11일 미디어위키 서버의 루트 디스크(8GiB)가 가득 찼는데 그중 5.8GiB가 도커 몫이었습니다. 쓰지 않는 이미지를 지워 풀었습니다(femiwiki#70).
월별 가용성
매달 2일에 지난달 것을 갱신합니다. 달을 누르면 날짜와 시간별로 볼 수 있습니다. 지표는 세 가지입니다.
- 페미위키:대문: Route 53이 세계 여러 곳에서 30초마다 대문을 요청한 결과로, 한 칸의 값은 그 시간 동안 성공한 요청의 비율입니다. 대문은 캐시에서 나가므로 서버가 아예 죽었을 때만 떨어집니다.
- 특수:빈문서: 같은 방식으로 빈 특수 문서를 요청한 결과입니다. 이 문서는 캐시를 거치지 않고 PHP가 만들어야 하므로, 로그인한 사용자가 편집할 수 있는 상태였는지에 가깝습니다. 4초 안에 응답하지 못하면 실패로 칩니다.
- GA4 세션: 구글 애널리틱스에 잡힌 그 시간의 방문 수를 그 달 같은 시각의 평소 방문 수와 견준 값입니다. 평소의 4분의 1 이상이면 1이고, 방문이 끊기면 0에 가까워집니다. 헬스체크가 없던 2021년 11월부터의 기록이 이것으로 남아 있습니다.
아래 그래프는 두 상태 검사가 각각 달마다 몇 시간 실패했는지입니다. 상태 검사가 생긴 2025년 6월부터 있습니다.
페미위키:대문
| 연도 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 연간 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 | 100 | 100 | 100 | 99.63 | 100 | 100 | 100 | 100 | 98.57 | 99.8 | |||
| 2025 | 100 | 100 | 99.94 | 99.51 | 100 | 99.97 | 87.93 | 98.19 |
GA4 세션
| 연도 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 연간 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 | 100 | 100 | 99.96 | 99.73 | 100 | 100 | 99.8 | 98.46 | 98.54 | 99.61 | |||
| 2025 | 100 | 100 | 100 | 99.73 | 99.33 | 100 | 100 | 100 | 99.96 | 99.37 | 100 | 87.45 | 98.82 |
| 2024 | 100 | 100 | 99.81 | 98.85 | 99.41 | 98.8 | 99.14 | 99.8 | 99.91 | 99.25 | 100 | 100 | 99.58 |
| 2023 | 100 | 100 | 100 | 100 | 100 | 100 | 98.75 | 100 | 100 | 100 | 100 | 100 | 99.9 |
| 2022 | 99.97 | 100 | 99.39 | 99.41 | 99.88 | 100 | 99.98 | 100 | 100 | 99.7 | 100 | 100 | 99.86 |
| 2021 | 99.89 | 99.87 | 99.88 |
특수:빈문서
| 연도 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 연간 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 | 99.99 | 98.68 | 99.15 | 98.93 | 99.99 | 99.21 | 96.27 | 75.39 | 74.94 | 93.62 | |||
| 2025 | 100 | 99.95 | 99.07 | 93.65 | 98.94 | 83.51 | 82.91 | 94 |