Tag Archives: 웹서버

블로그 배경음악 달기

페이지 위쪽에 음악을 들을수 있도록 플래시 기반 플레이어를 달았습니다.

예전에 만들었던 음악들을 다시 홈페이지에 어떻게 달까 생각하다가 좀 더 쉽게 들을수 있도록 하기 위해서 플래시 기반 음악 플레이어를 달기로 마음 먹고 구글에서 찾아 본 결과, 여러가지 기능을 제공하는

http://jeroenwijering.com/?item=Flash_MP3_Player

플레이어를 사용하기로 결정했습니다.

하지만 페이지를 왔다갔다할때마다 음악이 다시 시작되거나 끊기는건 아닌것 같아서, 어쩔수 없이 frame으로 페이지를 나눴습니다.  위에 20 pixel로 플레이어 frame을 만들었고 다른 링크들도 여기에 걸 생각입니다. 동작은 잘 했지만, 메인 페이지로 들어올때만 플레이어가 표시되고, 외부 링크를 눌렀을때도 플레이어가 남는등 .. 안좋은 점들이 있어서 찾다가 테터툴즈 플러그인 페이지에서 좋은 정보를 찾았습니다.

[Tatter1.0.?]루트에 설치된 태터에 배경음악 달기

이 방법대로 했더니 잘 동작은 하는데 몇가지 문제도 발견되었습니다. IE에서는 잘 동작하지만 Opera에서는 메인 페이지가 표시되지 않고, Firefox에서는 첫 페이지 접속할때 계속 요청이 반복되는 현상이 발견되었습니다 OTL. 물론 페이지 표시도 안됐습니다. 정확히 원인 파악은 안됐지만 lighttpd proxy -> apache 로 설정되서 이런문제가 발생하는지도 모르겠네요.

아래는 IE에서 접속했을 경우 아파치 로그:

127.0.0.1 – – [14/Oct/2006:13:40:37 +0900] “GET / HTTP/1.0” 200 470 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322)”
127.0.0.1 – – [14/Oct/2006:13:40:37 +0900] “GET /mover.php?page= HTTP/1.0” 200 37 “http://mix1009.net/” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322)”
127.0.0.1 – – [14/Oct/2006:13:40:38 +0900] “GET / HTTP/1.0” 200 79563 “http://mix1009.net/” “Mozilla/4.0 (compatible; MS

아래는 Firefox에서 접속했을 경우 아파치 로그:

127.0.0.1 – – [14/Oct/2006:13:42:52 +0900] “GET / HTTP/1.0” 200 470 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7”
127.0.0.1 – – [14/Oct/2006:13:42:52 +0900] “GET /mover.php?page= HTTP/1.0” 200 37 “http://mix1009.net/” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7”
127.0.0.1 – – [14/Oct/2006:13:42:52 +0900] “GET /mover.php?page= HTTP/1.0” 200 37 “http://mix1009.net/mover.php?page=” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7”
127.0.0.1 – – [14/Oct/2006:13:42:52 +0900] “GET /mover.php?page= HTTP/1.0” 200 37 “http://mix1009.net/mover.php?page=” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7”
127.0.0.1 – – [14/Oct/2006:13:42:52 +0900] “GET /mover.php?page= HTTP/1.0” 200 37 “http://mix1009.net/mover.php?page=” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7”

이렇게 계속 반복되서 DoS 공격이 되어버립니다. @@ 원인이 뭔지 빨리 파악해서 고쳐야하는데…

어디서 봤는지 잘 모르겠지만, 자바스크립트로 동적으로 a link를 찾아서 특정 확장자에 대해서 앞에 이미지를 달고 하는 걸 봤는데, 이걸 응용하면, link 주소에 따라서 target을 달리주는 방법으로 외부링크와 내부링크를 구분해서 동작하도록 하는것도 한가지 방법이 될듯하네요.

아직 htaccess와 mover.php 사용한 코드가 명확히 이해가 안됐는데 좀더 들여다봐야겠네요.

lighttpd 1.4.12 bug

1.4.12로 업그레이드한 후 서버가 가끔씩 죽었었는데 버그 찾아보니 해결되었네요. 1.4.11로 다운그레이드했었는데 소스 패치해서 다시 올려야겠네요. 1.4.11은 POST할때 가끔 먹통되는 버그가 있었는데, 해결은 아래 링크를 참조:

http://trac.lighttpd.net/trac/changeset/1352

FreeBSD 4.10에서 컴파일 안되는 버그도 있는데, 아래 URL을 참조:

http://trac.lighttpd.net/trac/ticket/875
http://trac.lighttpd.net/trac/changeset/1383

Varnish Cache Project & 웹서버 최적화

웹 프로그래밍을 전문적으로 하고 있지는 않으나, 서비스에 사용자가 많이 늘면서 여러가지 기술들을 찾고 있는데, 아직 본격적으로 적용은 못했으나 관심을 갖아볼 만한 프로젝트입니다. Varnish는 웹캐시로 웹속도를 줄이기위한 방법중 하나로 Reverse Proxy 역할을 위주로 설계됐습니다. 많이 쓰이는 Squid라는 프록시는 클라이언트 단에서 서버에서 오는 정보를 캐싱하여 클라이언트 단에서의 접속 속도를 향상시키는 역할이 주인 (Forward) Proxy로 주로 쓰입니다. 반면 Reverse Proxy는 서버단에 가까운곳에 위치하여 서버에서 나오는 데이타를 캐싱하여 서버의 부하를 줄이는 역할을 하며, 주로 동적으로 생성되는 페이지가 많을 경우 효과를 볼수 있습니다.

Varnish는 효율성을 위해서 C로 짜여져 있으며, VCL이라는 언어로 설정이 가능합니다. VCL은 간단한 언어로 오브젝트 파일로 컴파일되어 데몬에서 호출되는 등 빠르게 동작할수 있도록 최적화에 신경을 많이 썼습니다. 주 개발자는 FreeBSD 커널 여러부분에서 작업해서 OS에 대한 이해도가 높고, 기존에 있던 캐싱 시스템들이 옛날 하드웨어 맞게 최적화되어 개발되어 있기 때문에 오히려 요즘 처럼 여러단계로 메모리가 캐싱되는 하드웨어 상황에서는 적합하지 않다고 얘기합니다.

홈페이지는 http://varnish-cache.org/ 이며, FreeBSD에서는 /usr/ports/www/varnish 에서 설치할수 있습니다.

회사 서비스 중 웹서버에 많은 부하가 집중되어 있었는데 많은 부분 해결이 되었습니다. 해결을 위해 동원된 방법은…

  • SQL 쿼리 최적화
  • PHP에서 필요한 부분만 include (main include 파일이 커져서)
  • 랜더링 오래 걸리는 페이지 memcache에 캐싱
  • 잘 변하지 않는 페이지 html로 저장
  • 웹서버 Apache에서 lighttpd로 변경
  • xcache 적용 (코드 캐시만 사용)

동시 연결된 클라이언트가 급속히 늘다보니 아파치 1.3에서는 mod_php는 메모리가 너무 많이 차지하여 한계가 생겼었습니다. 당시 php 처리도 느렸었지만, lighttpd에 fastcgi로 바꾸고 나서는 메모리 사용량이 현저히 줄었습니다. xcache는 php 컴파일된 코드를 메모리에 캐싱하는 모듈로 적용후 php의 부하를 많이 줄일수 있었습니다. xcache에서 memcache와 동일한 기능도 제공합니다. 그외에 pen이나 plb등의 S/W load balancer 도입도 생각하고 있으며, lighttpd의 fastcgi load balancing도 고려하고 있습니다.