슈퍼 서버 (super-server) 또는 가끔은 서비스 대스패처 (service dispatcher)라고 불리는 이것은 유닉스 계열 시스템에서 돌아가는 데몬의 한 종류이다. 다른 서버 프로그램을 관리 / 제어하고 필요한 경우 해당 서버 프로그램을 실행하는 프로그램이다. 말 그대로 슈퍼(상위의 초월적)인 존재이기 때문에 "서버의 서버"라는 의미에서 슈퍼 서버라고 불린다.

슈퍼 서버의 원리
예시 도표

서버 프로그램은 슈퍼 서버에서 시작하는 것이 아니라 개별 서비스를 직접 시작하고 데몬으로 상주시켜 둘 수 있다. 이 가이드에서는 이러한 시작 방법을 독립형 모드로 부팅이라고 부르고 있다.

웹 서버아파치 또는 메일 서버의 포스트픽스 등은 독립형 모드에서 시작한다. 한편, 슈퍼 서버에서 시작하는 방법을 슈퍼 서버 모드로 부팅이라고 한다. 터보리눅스 11 Server는 ipop3, imap 등의 서비스가 Xinetd로부터 시작되도록 설정되어 있다.

사용 편집

이것은 필요할 때 다른 서버들을 시작시켜 주는데, 보통은 TCP 래퍼에 확인된 그들에 대한 접근도 같이 제공한다. 초기 상태에서는 매우 적은 자원을 사용한다. 이것은 로컬 웹 개발, 클라이언트/서버 개발 또는 시큐어 셸 같은 때때로 사용되는 낮은 트래픽의 데몬들을 위한 워크스테이션에 적합하다. 

성능 편집

하위 데몬에 접근하는데는 약간의 딜레이가 존재한다. 그러므로 독립 실행 (standalone) 서버들과 비교하면, 특히 고하중시에 성능상 떨어지게 된다. 그러므로 hpa-tftpd 같은 몇몇 서버들은 스스로 인터넷 소켓을 받고 리슨한다.

슈퍼 서버의 장점 편집

슈퍼 서버 모드에서 서버 프로그램을 시작하는 이유는, 슈퍼 서버의 기능과 역할을 아는 것으로 이해할 수 있다.

시스템의 부하 경감 편집

개별 서버 프로그램을 독립 실행형 모드에서 시작하면 서버 프로그램은 각 메모리를 차지하기 때문에 많은 메모리를 필요로 한다. 그러나 그 서버 프로그램은 항상 사용할 수 있는 것은 아니다. 슈퍼 서버 모드로 부팅하면 슈퍼 서버가 서버 프로그램을 대신하여 메모리에 상주하며 포트를 모니터링한다. 그리고, 요청이 들어올 때 그 포트를 지원하는 서버 프로그램을 시작하기 때문에 메모리 사용량과 시스템의 부하를 줄일 수 있다.

시스템 관리의 부하 경감 편집

개별 서버 프로그램을 독립형 모드로 부팅하는 경우, 각 서버 프로그램을 개별적으로 관리해야한다. 시스템 관리자는 앞으로도 수가 더 늘어날 것이니 다양한 서버 프로그램에 대응해 나갈 필요가 있지만, 그 모든 것을 개별적으로 관리하는 것은 더 이상 비현실적이며, 중앙 관리 / 제어 할 수 있는 슈퍼 서버의 역할은 필수 기능이다.

시스템의 여유도 / 견고성 향상 편집

슈퍼 서버 모드에서 서버 프로그램을 시작하면, 서버 프로그램의 서비스가 어떠한 이유로 제대로 작동하지 않더라도 다음 요청에 의해 다시 시작되어 시스템 여유도 / 견고성을 향상시킬 수 있다.

슈퍼 서버의 단점 편집

슈퍼 서버의 단점으로는 요청을 수락할 때마다 서버 프로그램의 시작 / 종료가 이루어지기 때문에 아래와 같은 경우는 반대로 서버 부하가 높아지기 때문에 성능이 저하된다.

  • 연결 요청 요구의 빈도가 높은 서비스의 경우
  • 프로그램 부팅 시 초기화 작업에 시간이 걸릴 수 있는 경우

이 같은 부하가 걸리는 서비스의 경우 독립형 모드에서 시작하는 것이 효율이 좋다고 말할 수 있다. 그 대표적인 예로는 웹 서버처럼 자주 연결 요청을 수락하는 서비스이다. 메일 서버도 같은 이유로 독립 실행형 모드로 부팅 권장되는 서비스로 권장된다.

구현 편집