System Compleat.

'Webserver tunning on Solaris'에 해당되는 글 1건

  1. Apache/NginX on Solaris

Apache/NginX on Solaris

Techs
( younjin.jeong@gmail.com , 정윤진 )

오늘은 링크 위주의 간단한 포스팅.

약간 대규모의 사이트를 돌아보다 보면, 간혹 Apache + WebLogic + Oracle 의 구성을 보게 된다.  보다 더 예전의 대규모 시스템이라면 중간에 Tuxido 가 낑궈지는 경우도 있지만, 이는 논외. 
보통 이런 시스템들은 WAS의 종류에 따라 AIX 5.x 에서 구동되는 경향도 있지만, Solaris 에서 구동되는 비중이 좀 더 컸던 기억이다.  물론, Solaris 가 주는 ZFS 의 수혜를 벗어나기는 힘들기도 하거니와,  WebLogic + Oracle on Solaris 는 제법 잘 동작하기 때문에 별 고민이 없지만,  이놈의 웹 서버가 문제다.

SunOne 에 대해서는 뭐 굳이 본 포스팅 특성상 여기서 언급할 건 아닌 듯 하고, Apache 나 Nginx , Lighttpd 와 같은 여러 오픈소스 기반 웹 서버들은 통상 Intel x86 , x64 에 포커싱이 맞추어져 있기 때문에, default compile 옵션에 SPARC 이나 기타 프로세서가 제공하는 feature 등에 대해 별도의 옵션을 추가하거나, config 파일에 수정을 가해줘야 되는 경우가 있다.  물론, 사용자가 별로 없는 서비스라면 default 옵션/compile 만으로도 잘 동작 하지만, request가 제법 되는 상황에서 이미지가 많거나 ( sendfile , accept mutex )  caching 관련 기능을 사용 하거나, pthread 등의 설정으로 사용하는  Apache 가 hang 상태가 되거나, 프로세스는 멀쩡히 살아 있지만 커넥션을 받지 않는 상황이 되어 버리면 이는 곧 서비스 다운을 초래 할 가능성이 높다.

이러한 어려가지 튜닝을 위해, 아파치 관련 퍼포먼스 튜닝을 위해 다음의 링크와 같은 친절한 한글 페이지가 있다.
물론, 아시는 분들은 이미 다 아시는 사이트기 때문에 별도로 추가 할 일은 없지만,  이게 실제 서버에서 어떠한 증상으로 나오는 경우 또는 어떤 로그로 인해 어떤 조치를 취해야 하는 가 등은 좀 나중에 다시 자료를 모아서 쓰겠다.
http://httpd.apache.org/docs/2.0/en/misc/perf-tuning.html

처음 보시는 분들은, 위의 링크에서 나오는 여러 시스템 콜이나 웹 서버의 동작 로직에 대해 파 볼만한 소재가 충분 할 듯.


Nginx 관련 해서는, 역시 다른 시스템과 마찬가지로 event 의 처리 방식이 관건 이다.
역시, default 로는 그냥 저냥 무난하게 동작하거나, 문제가 발생해도 주기적으로 재시작 해 주면 문제가 되지 않지만 사이트의 규모가 크다던가, 캐쉬빨로 서비스 하는 시스템에서는 프로세스의 재시작이 아주 끔찍한 결과를 초래 할 수 있기 때문에,  각 해당 플랫폼의 처리 방식에 대해 이해 해 둘 필요가 있겠다.

NginX 에서 제공하는 NginxHttpEventsModule 에서 해당 부분을 처리하며, 제공하는 설정은 아래의 링크에 잘 나와있다.
http://wiki.nginx.org/NginxHttpEventsModule

Solaris 에서 제공하는 event 처리는, Event Ports 가 있다.  기회가 되면 번역 & 설명을.

config 에 들어가는 문법은 대충

events {
       worker_connections 1024;
       use eventport;
}

이며, 이러한 설정이 Static 파일을 처리하는데 있어서 얼마나 잇점을 가져다 주는지는 스트레스 테스트로 알 수 있을 듯.
( 만능이 아니므로, 덜컥 적용해서 피봤다고 욕하지 말자 )

웹 서버의 동작은 , 시스템의 거의 모든 I/O 가 총 집합되어 시스템 내부적으로 전송되는 단계를 어떻게 처리하느냐에 있어 static 파일의 전송에 시스템이 정지할 수도, 또는 기대 이상의 속도로 퍼포먼스를 내어 줄 수도 있다.

회사에서 더이상의 비용을 투자하지 않는 상황이라면 위의 몇개의 링크에서 제공하는 방법을 여기에서 설명되지 않는 웹 서버에서의 튜닝과 함께 찾아보고, 테스트 해 본다면 더욱 많은 방법을 알게 될 거라고 생각 한다.
역시, WebLogic 에서의 jsp 리크라던가, Oracle 과의 연동 문제라면 당연 아파치 쪽에서 문제가 생길 수 있으므로, 이러한 부분 역시 디테일하게 살펴야 하는 중요 포인트 이므로 놓치지 말자.


오늘은 짧은 포스팅이니까 이만. 


( younjin.jeong@gmail.com , 정윤진 )