안녕하세요, 페미위키 서버 관리 등을 맡고 있는 개발팀 낙엽1124입니다. 먼저 2025년 가을부터 1년 가까이 페미위키가 자주 느려지거나 멈췄는데도 오랫동안 바로잡지 못하여 그동안 불편을 겪으신 분들께 사과 말씀 드립니다. 이번 추석 연휴에야 드디어 제대로 손을 썼기에 무슨 일이 있었고 무엇이 바뀌었는지 글로 남깁니다.
문제 기록
기록을 시작한 이후로는 2025년 9월부터 로그인과 편집이 며칠씩 안 되거나 사이트가 아예 열리지 않는 일이 시작된 것으로 보입니다. 가장 길었던 것은 2025년 12월로, 91시간 동안 사이트가 열리지 않았습니다.
크롤러

근래 AI 언어 모델 학습에 쓸 글을 모으는 크롤러가 늘면서 글이 많고 자유 라이선스인 위키들이 몸살을 앓고 있습니다. 위키미디어 재단은 2025년 4월, 2024년 초부터 멀티미디어 대역폭이 50% 늘었고 대부분이 AI 모델에 넣을 이미지를 긁어 가는 봇 때문이며, 가장 비용이 많이 드는 요청의 65% 이상이 봇이라고 밝혔습니다.[1]
페미위키가 맞은 트래픽 또한 대부분이 크롤러로 추정됩니다. 크롤러들은 로그인하지 않은 상태로 검색, 차이, 옛 판, 역사(이하 "무거운 요청")를 대량으로 요청했습니다. 평소 시간당 1,300건 정도이던 무거운 요청이 9월 23일에는 8,000건 정도로 늘었습니다.

또 요청이 수많은 주소로 흩어져 있어 대역마다 거는 제한에는 거의 걸리지 않았습니다. 9월 25일 새벽 한 시간 동안의 무거운 요청 7,288건은 /24 대역 726곳에서 왔고 가장 많은 대역도 6% 정도였습니다.[2] 요청 500건을 뽑아 보니 모두 아이폰이나 안드로이드 브라우저라고 되어 있었습니다. 다른 서비스를 운영하시는 분이 말해 주셨는데, 요즘은 가정용 인터넷 주소를 빌려주는 업체가 있어서 아무리 데이터센터 주소를 막고 오래된 브라우저 이름을 막아도 주소를 바꿔 가며 다시 온다고 합니다.
서버와 요금
페미위키 서버는 CPU 2코어로, 워커를 16개로 늘린 뒤 무거운 요청이 10분에 1,610건일 때는 버텼고 1,955건일 때는 멈췄습니다.
또 이 서버는 CPU를 기준치 20%보다 많이 쓰면 CPU 크레딧을 소모하는 종류이고, 크레딧이 바닥나도 느려지지 않도록 초과분을 요금으로 내게 설정해 두었습니다. 그래서 2026년 8월에는 CPU 크레딧 초과 요금이 38.02달러로 그달 요금의 30%가 되었습니다.[3] 페미위키의 AWS 요금은 테크숩을 통해 받는 비영리 크레딧으로 내 왔는데 1년 치로 받은 크레딧이 2026년 4월에 바닥나 4월부터 8월까지 1,054,121원을 실제로 냈습니다.[4]
그동안의 대응
사실 저희가 이상한 요청을 서버 앞에서 걸러 내기 시작한 것은 오래전 일입니다. 2020년 말 URL에 알 수 없는 문자를 섞은 요청이 쏟아졌을 때 개발팀 김지현 님은 이런 요청을 웹 서버(Caddy)에서 바로 돌려보내는 규칙을 처음 넣었습니다.[5] 김지현 님은 또 사이트가 살아 있는지 살피는 검사도 만들고,[6] 한 번 읽힌 문서를 웹 서버에 담아 두는 캐시도 구상했습니다. (구현은 2021년 4월 제가 이어받아 마쳤습니다)[7]
2025년에는 다음과 같이 대응했지만 사이트는 계속 끊겼습니다.
- 여름 - 차별없는세상 님이 의심스러운 방문자에게 reCAPTCHA를 풀게 하는 확장 기능 FemiwikiCrawlingBlocker를 만들었으나[8] 기대한 대로 작동하지 않아 9월부터 껐습니다.[9]
- 가을 - 로그인과 편집이 며칠씩 안 될 때마다 의심되는 주소 대역을 찾아 막았습니다.
- 11월 - Lockdown 확장 기능으로 로그인하지 않은 방문자가 문서 역사와 몇몇 특수 문서를 보지 못하게 잠갔습니다. 크롤러가 링크를 따라 무거운 페이지까지 긁어 가는 것을 줄이려는 것이었으나 회고해보면 효용이 거의 없었습니다.[10]
'페이지가 너무 늦게 넘어간다', '끊긴다'는 제보도 잦아졌고, pleasesica 님은 올해 4월 새로 오신 분들과 위키를 배우는 모임을 앞두고 접속이 끊기면 속상할 것 같다며 점검을 부탁하는 메시지를 보내 주시기도 했습니다.
저는 원인을 제대로 보지 못한 채 AI 크롤러일 거라고 짐작만 하다가, 제가 마침 시간을 길게 낼 수 있는 추석 연휴까지 미뤄 왔습니다.
변경 내용
사이트 전체 상한 - 적용됨
로그인하지 않은 무거운 요청을 사이트 전체에서 한데 세어, 상한을 넘으면 서버까지 보내지 않고 바로 거절합니다.[11] 10분에 600건으로 시작해서 올렸다 내렸다 한 끝에 1,600건으로 정했습니다.[12] 이 위에 크롤러를 종류별로 따로 세는 규칙을 더해 가고 있습니다.
문서 캐시 - 해결됨
캐시가 버그 때문에 한 번에 문서 17개밖에 담지 못하고 있었습니다. 9월 25일 사고 때 문서 읽기 2,453건 중 캐시에서 나간 것은 749건뿐이었습니다.[13]
바쁠 때도 읽기 - 적용됨
PHP 워커가 모두 바빠 보일 때도 문서 읽기는 바로 오류로 돌려보내지 않고 처리하여 보게 했습니다.[14] 워커 수도 10개에서 16개로 늘렸습니다.[15]
알림 - 해결됨
Grafana 쪽 알림은 이제 성공한 응답이 줄면 30분마다 다시 울리고,[16] 요청이 5분 넘게 밀려 있다면 울립니다.[17]
역사 잠금 - 해제됨
다른 대안들로 해결되었으므로 11월에 걸었던 Lockdown 잠금을 9월 26일에 풀었습니다.[18] 9월 27일부터는 역사를 따로 세어 로그인하지 않아도 볼 수 있습니다.[19]
로그인하지 않은 사용자의 거절 - 남아 있음
크롤러가 몰리는 동안에는 로그인하지 않은 사용자가 차이나 옛 판을 보려다 아래 화면을 볼 수 있습니다. 이 화면을 자주 보신다면 로그인해 주세요.
맺음말
사이트가 통째로 멈추는 일은 막았지만, 로그인하지 않은 사용자가 거절당하는 문제가 남아 있고 2025년 12월에 91시간 멈춘 사고는 이제 원인을 찾을 수 없게 되었습니다. 그러나 앞으로는 알림이 제때 오고 기록도 양과 가짓수를 늘렸기에 같은 일이 생기면 원인을 보고 대처할 수 있게 되었습니다.
제보해 주시고 여러 방법을 함께 고민해 봐 주신 분들께 감사드립니다.
페미위키의 서버 설정과 코드는 모두 GitHub에 공개되어 있습니다.
링크
- 페미위키 가용성: 사고 보고서 전체와 월별 가용성
출처
- ↑ Birgit Mueller; Chris Danis; Giuseppe Lavagetto (2025년 4월 1일). “How crawlers impact the operations of the Wikimedia projects”. 《Diff》 (영어). Wikimedia Foundation. 2026년 9월 27일에 확인함.
- ↑ https://github.com/femiwiki/infra/issues/626
- ↑ https://github.com/femiwiki/femiwiki/issues/532
- ↑ https://femiwiki.github.io/%EB%B9%84%EC%9A%A9.html
- ↑ https://github.com/femiwiki/docker-mediawiki/commit/33e6ee7
- ↑ https://github.com/femiwiki/infra/commit/023878a
- ↑ https://github.com/femiwiki/caddy-mwcache/pull/3
- ↑ https://github.com/femiwiki/infra/pull/402
- ↑ https://github.com/femiwiki/infra/commit/b3e0ac1
- ↑ https://github.com/femiwiki/infra/pull/446
- ↑ https://github.com/femiwiki/docker-mediawiki/pull/1109
- ↑ https://github.com/femiwiki/infra/pull/687
- ↑ https://github.com/femiwiki/docker-mediawiki/pull/1048
- ↑ https://github.com/femiwiki/docker-mediawiki/pull/1108
- ↑ https://github.com/femiwiki/infra/pull/628
- ↑ https://github.com/femiwiki/infra/pull/562
- ↑ https://github.com/femiwiki/infra/pull/623
- ↑ https://github.com/femiwiki/infra/pull/806
- ↑ https://github.com/femiwiki/infra/pull/909