사람들이 나의 글을 읽으려 홈페이지, 혹은 블로그를 찾아준다는 것은 고마운 일이다.
물론, 요즘은 그 의미가 많이 퇴색하여 잘 갠 떡밥 같은 제목으로도 많은 트래픽을 유도할 수 있지만
어쨋든 내 좌판의 물건 하나 안사가도 문전성시를 이룬다는 것은, 행복한 일일거다.
특히나 나처럼 글을 올리지 않고 조용히 놔둘땐 100명 내외의 방문객이 드나드는 블로거의 경우,
오늘 내가 누린 호황처럼 7000명이 넘는 투데이를 기록하는 것은 흥분된 일이다.
리퍼러통계를 보며 어디서 유입이 되었나 보기도 할 거고,
댓글에 또 댓글을 달며 즐거움을 만끽할 것이다.
그런데, 다음이나 네이버, 티스토리나 이글루 같은 임대형 블로그가 아닌 설치형 블로그를 사용하는 경우라면
얼마 안가 '트래픽 폭탄'에 홈페이지가 열리지 않는 현상이 발생한다.
오늘 나도 블로거뉴스에 베스트로 선정된 글 때문에 오후 3시 쯤인가 부터 한시간 정도 접속이 되질 않았다.
사람들이 많이 볼 수 있게 베스트에 선정이 되었음에도 불구하고 트래픽 때문에 홈페이지 접속이 안된다면
'방문객 유입'에 신경을 많이 쓰는 블로거의 경우, 눈에서 땀이 날 지도 모르는 일이다.
솔직히 개인서버를 돌리는 유저보다 호스팅을 받는 블로거가 이 부분에선 더 불리하다.
매일 그렇게 사람들이 많이 들어오는 것도 아니고,
단기간 유입 방문객이 많아질 때, 트래픽 리셋을 신청할 수는 있겠지만
대형 포털의 메인에 글이 걸리거나, 붐이 일어 단기적인 유입이 폭발적으로 증가했을 때
결국 돈을 주고 트래픽을 더 늘릴 수 밖에 없을 것이다.
뭐, 그렇게 늘려놓은 트래픽도 평상시로 돌아왔을 때에는 필요없는 잉여분이 되는데도 말이다.
네이버의 오픈캐스트를 보며 걱정했던 것도 그런 부분이다.
임대형 블로그는 충분히 소화할만한 트래픽이겠지만,
네이버 메인에서 소개된 설치형, 호스팅 이용 블로거라면 삼십분이나 버틸 수 있을지 모르겠다.
이 부분의 해결책은 트래픽용량을 더 늘리는 수 밖에 없다고 생각한다.
그럴 생각이 없다면, 임대형 블로그로 전향하면 해결 될 일이니 설치형 블로그를 고집하지 않으면
크게 문제 될 것은 없다.
개인서버유저에겐 이 부분이 문제다.
개인서버유저는 왠만한 트래픽은 걱정 않겠지만,
단기간에 폭발적으로 증가하는 트래픽은 감당하기 힘들 것이다.
나 역시 전문가가 아니라 왜 그 부분이 문제가 되는 것인지는 확실하게 알 수 없지만
개인적인 생각으로, 아마 공유기가 버틸 수 있는 최대 접속자를 넘으면
버벅 대다가 결국 문제가 생기지 않나 싶다.
개인서버를 돌리는 것은 나 같은 몇몇 사람들에겐 로망이며 자부심이다.
그것은 마치 집 어항에서 물고기를 키우고 있는 것 같은 물생활과 맞먹는 즐거움이며,
누전세가 가끔 울리긴 하지만, 왠만한 트래픽엔 문제 없으며 하드 용량을 혼자 다 쓴다는 기쁨이다.
그런데 이런 트래픽 문제는 어떻게 해결해야 하는가.
"로망이고 뭐고 때려치고 티스토리 고고"
뭐, 누군가에겐 이정도로 해결될 간단한 문제겠지만,
승리의 프비유저는 굴복하지 않기에
reboot과 apachectl restart로 맞서고 있다.
혹시 이런 부분을 해결한 블로거가 있거나
그것도 해결 못하냐 멍청아, 라고 하실 분이 있다면 조언을 부탁드린다.
뉴비는 언제나 굽신굽신.
아, 그리고 /var 의 용량이 목까지 차 오른 상태에서
뭔가 해결할 방법이 없는지도 알고 싶다.
(백업 후 파티션 용량을 늘리는 것은 자료가 날아갈까봐 후달려서 하질 못하겠다)
(링크를 /usr 쪽으로 거는 방법이 있다는데, 역시 리눅스에서의 방식이 아닌 FreeBSD에서의 방식을 알고싶다)
개인서버 유저들 화이팅!
MBC노조 화이팅!
강기갑 화이팅!
+ XE 이용자분들은, 1.1.4로 업뎃 되었네요. 제로보드 홈피 확인해 보셔요.
'난'을 붙이셨으면 트래픽 폭탄을 맞으셨을 듯 ㅋ
(저 역시, 물론 농담이구요)
요즘엔 트래픽 폭탄에는 별 의미 없으며,
댓글이 달리는 것이 더 의미있지 않나, 하는 생각을 해봅니다.
저도 2008년 12월 1일부터 새로 시작한 까닭에 블로거 뉴스도
그 즈음 알게 되었고, 사실 블로그가 이리 활성화 되었는지는 몰랐답니다.
저는 글 쓰는 녀석이기 때문에, 사실 글 써서 먹고 살아야 하는데
지금은 전공과는 먼, 웹디자인 일을 하고 있답니다.
말이 웹디자인이지 사진도 찍고 가구도 나르고, 뭐 소품 색칠도 하고
'잡부'라는 표현이 딱 맞네요. 군대에서 하던 거 이어서 계속 하는 거 같습니다.
(삽질과 제설작업도 한답니다 ㅋ)
좋은 하루 보내시구요!
늦었지만, 새해 복 많이 받으세요
특히 이미지 많은 글은 순식간이더군요-_-;
그리고, 요즘 로봇들이 너무 많아서 방문객 보다는 댓글이 반갑더라구요. ^^;
형.. 나도 이거 설정 파일이 따로 있는 게 아니고(서버를 꺼두고 있음)
해본지도 오래되서 어디를 어떻게 고치라고는 정확히 얘기할 수 없는데...
linux 기준으로 설명한 문서를 feedback 해줄테니 참고해... httpd.conf 설정 방법이야.
1. 웹 페이지 로딩시간 확인
#time -pa lynx -source http://www.gwise.com > /dev/null
real 0.74
user 0.16
sys 0.09
-------------
실제 접속시간 : 0.74-(0.16+0.09)=0.49초
2. 아파치 벤치 마킹
#man ab 사용법 보기
-n requests 요청을 수행할 개수
-c concurrency 요청을 만들 개수로 동시 사용자 개념으로 이해하면 되겠다.
-v verbosity 얼마나 자세한 정보를 화면에 출력해 줄 것인지 결정
-w HTML 문서형식으로 테이블로 만들어 결과를 화면에 출력
-k HTTP 프로토콜의 지속연결 (KeepAlive) 기능을 사용
#./ab -n 100 -c 10 http://www.gwise.com:80/
10 명의 유저가 동시에 http://www.gwise.com/index.html 을 요청하는 것을 모
의 실험. 각각의 시뮬레이트 유저는 요청을 10 번씩 하게 됩니다
# ab -n 1500 -c 50 http://www.apache.kr.net:80/
요청을 30 x 50 (50 명의 사용자가, 각각 30 번의 요청)
Requests per second: 80.48
초당 80.48개를 요청 했음.
'MaxRequestsPerChild’ 는 메모리 누수현상(?) 등이 발생하지 않는다면 가능한 이 값을 높게 설정하시고요(파라미터의 값을 0 으로 설정해 무한대로 하실수도 있습니다) StartServers’ 는 프로세스가 active 되어 있는 경우가 적을 경우 값을 낮게 설정하시고, 접속량이 아주 많을 경우는 MaxClients 에 가깝게 조절하시기 바라며, MaxSpareServers 를 MaxClients 와 같게 설정합니다. MaxClients 는 너무 낮게 설정하지 않도록 주의하시기 바라며, 그렇다고 또 너무 크게 잡으셔도 안됩니다
3. 웹 서버 삽질 막기
BrowserMatch WebZip go_out
BrowserMatch Teleport go_out
BrowserMatch GetRight go_out
Deny from env=go_out
4. 아파치 튜닝
일반 서버에서는 다른것은 그냥 Default 값으로 둔다.
(대형 서버의 경우 말고는 특히 쓸 일어 없을 것이다.)
증가 시킬 경우 배수로 한다. 꼭 이렇게 해야 한다가 아니라
이렇게 하면 좋다.
Timeout 300
클라이언트의 요청에 의해서 Server와 연결 되었을때
클라이언트와 서버간의 아무런 메시지가 발생하지 않았을때 오류로 처리하는 시간 네트워크 속도가 나쁠수록 수치값을 높게 한다.
KeepAlive on
지속적인 접속, 즉 서버 연결에 대하여 한번 이상의 요청을 허용 여부.
MaxKeepAliveRequests 100
클라이언트가 접속된 시간동안 아파치 서버에 요청할 수 있는 처리 process 개수
StartServers 5 X ? =20 -> 초반에 뜰 process 그 이상 그이하의 의미도 없다.
MinSpareServers 5 X ? =20 -> Spare 프로세스가 이것 이하 일때 끌어 올려 준다.
MaxSpareServers 10 X ? =40 -> Spare 프로세스가 이것 이상 일때 진정(?)시켜 준다.
말 그대로 Spare.... 언제 있을지 모를 요청에 대해서 컴퓨터 스스로가 조절해 준다.
MaxClients 150
클라이언트들이 동시에 최대로 접속했을때 가능한 최대 서버이 수를 지정.
Ulimit -a ~~~ max process...이 수치 이상 증가 못함.
httpd.h
HARD_SERVER_LIMIT=250 조정해서 다시 컴파일 가능
MaxClient 150 -> 동시에 떠 있을수 있는 최대 process
더 많은 수를 원할시 httpd.h 소스 파일의
HARD_SERVER_LIMIT 값을 수정 한 다음 다시 컴파일 해야 한다.
#ulimit -a
core file size (blocks) 0
data seg size (kbytes) unlimited
file size (blocks) unlimited
max memory size (kbytes) unlimited
stack size (kbytes) 8192
cpu time (seconds) unlimited
max user processes 2048
pipe size (512 bytes) 8
open files 1024
virtual memory (kbytes) 2105343
-----------------------
위의 max user processes 의 수를 초과 할 수 없다.
MaxRequestPerChild 100
한 프로세스가 몇 번의 서비스를 하고 소멸될 것인지 정한다.
M$계열에서는 별 의미가 없으므로 0을 한다.
하지만 Unix 계열은 0을 사용하지 않는 것이 좋다.
가장 중요한 것은Timeout 설정입니다. 위에서 keep-alive 를 설정해 놓은 경우, 하나의 connection에서 계속해서 다음 request를 처리할 수 있기 때문에 효율적이라고 하지만, 실제로는 그렇지 않습니다. keep-alive 를 허용하고 그 timeout을 5초로만 설정해도, 하나의 request를 처리한 후 적어도 5초동안은 그 httpd가 다른 작업을 하지 못하고 다음 request를 기다리게 됩니다.
보통 웹브라우저들은 서버로 동시에 4개의 connection을 만들게 됩니다. 한 페이지를 보는데 이미지 등등 해서 보통 4개의 connection을 만드는 것은 기본이죠. 이렇게 되면 httpd가 100개 떠 있다고 해도, 실제로는 동시에 25명의 방문자밖에 처리하지 못합니다.
그리고 keep-alive timeout이 5초인 경우, 한 명의 방문자를 처리한 후 적어도 5초동안은 계속해서 기다리면서 httpd가 놀게 됩니다.(그렇다고 해서 httpd의 수를 늘여주면 앞의 문제 때문에 load가 몰릴 때 순간적으로 부하가 지나치게 많이 걸리게 됩니다. 어떤 request는 수초가 지난 후 답을 받는 등 quality of service가 많이 떨어지죠.)
결국 한 명의 방문자를 처리하는데 4개의 httpd가 5초동안 작업한다는 뜻이고, 100개의 httpd를 띄워봐야 1초에 5명의 방문자밖에 처리하지 못하는 셈입니다. ( 1 명 / 5 sec / 4 httpd = 5 / 1 sec / 100 httpd )
그래서 검색엔진 서비스 등 traffic이 많은 사이트에서는 keep-alive 옵션을
반드시 꺼놓게 됩니다. 그리고 connection timeout도 상당히 짧게 설정해 놓죠. 4~5초
이내로 말입니다



그래서 그런 꿈같은 트래픽 함 맞아봤으면 할 뿐이고
웃자고 한 얘기구요
트래픽 폭탄 맞는다는 애기는 그만큼 좋은 포스팅을 많이 하신다는 것일 터
종종 들러 많이 훔쳐 배우겠습니다