웹마스터 팁
DB LOCK으로 인한 사이트 마비와 사례, 조치
2015.01.24 23:58
안녕하세요^^
저는 CMS를 가지고 프로젝트를 종종 합니다.
특히 XE를 오래전부터 다루어오다보니 XE가 어렵지만... 어느정도 다룰줄 알게 되었고 무엇보다 친근감이 생겨 더욱 애착이 갑니다.
여러분께서 알아두시면 좋을듯하여 얼마전에 제가 처리한 문제에 대하여 말씀드리고자 합니다.
문제의 요지는 DB LOCK으로 인해 CPU사용률이 증가하고 서버내의 같은 DBMS를 사용하는 사이트들이 모두 마비가 되는 증상이었습니다.
실제로 CPU 사용량이 97%이하로 떨어지지가 않더군요
서버에는 국내의 유명한 CMS들이 골고루 들어가있었구요...
CMS들을 여러개 다루다 보면 DB의 테이블명이라던지, 컬럼명에 대해서는 어느정도 눈에 익어있습니다.
DB의 I/O를 체크했더니 prefix가 xe_로 붙은 테이블에서 엄청난 요청이 들어오더군요...
둘중 하나였습니다.
1. 엄청나게 user수가 많아 동접자수의 증가로인해 서버에서 감당하지못할만큼의 요청이 오는 것
2. 봇/스팸에 엄청난 요청
우선은 DB로 요청되는 query들을 보았습니다.
몇가지가 섞여있긴 했지만 역시나 xe_member테이블과 xe_documets테이블로 요청이 들어오고 그다음부터는 Lock Lock Lock Lock .....
2번을 의심할수밖에 없는 상황이었던것이.. documents 테이블로 들어오는 부분이 모두 영어로 되어있더군요...
우선 xe_documents 테이블로 가서 쌓여있는 row들을 보았더니... 아니나 다를까더군요.
수십만개의 row들이 거의 영어로 쌓여있더군요.
우선은 판명된 원인에 대한 설명과 시행항 조치에 대해 말씀을 드리고
초치를 시작했습니다.
조치란 별것이 아니었습니다.
XE는 캡챠가 있으므로 캡챠에 대한 설치를 진행하십사 말씀드리고
우선 지금 들어오는 요청에 대한 부분을 막아야 하므로
1. 회원가입조건에 관리자의 승인이 있어야 가입할 수 있도록 조치하였고
2. 해당 사이트의 모든 게시판에 대해 접근권한을 로그인사용자 이상으로 처리해버렸습니다.
요청이 너무 많은 상태라 관리자페이지를 한페이지한페이지 띄우는데도 수분이 걸리더군요...
이 후 CPU 사용량이 50%이하까지 쭉쭉 떨어지더군요....
위와 같은 조치는 임시적인 조치 입니다.
서버의 OS단에서 특정IP에 대한 접속시도를 막는다던지, 캡챠(애드온? 모듈?)을 사용하셔서 무분별한 봇의 공격(?)에 꼭 대비하시기 바랍니다.
자체서버를 사용하시는 분들중에는 서버전문가가 아닌 분들도 계시므로 이러한 부분들에 대한 문제가 빈번히 일어날수 밖에 없다고 봅니다.
저런 상황에 마주치면 더욱더 당황스러워져서 놓치기 쉬워질수도 있지요.
여러분들께서 모두 알고계신 내용일 수도 있습니다만, 공유할만한 사례 및 조치방법이란 생각에 몇자 적어보았습니다.
긴글 읽어주셔서 감사합니다.
쪽지 확인 부탁드립니다.