'fastCGI'에 해당되는 글 1ATOM

  1. 2008/06/10 inureyes 서버 수정 / fastCGI

서버가 뻗은 김에 복구하면서 몇가지 설정 수정이 있었습니다.

예전에 연구 목적으로 돌리기 위하여 서버의 퍼포먼스를 제한해 둔 부분을 풀었습니다. PHP 인스턴스 하나가 사용할 수 있는 메모리를 줄이고, 대신 fastCGI 인스턴스를 두 배로 늘렸습니다. 로딩 속도가 좀 많이 달라지게 되었습니다.

누비마루 사용자 분들께서는 참고하세요. :)

*

fastCGI는 가난한(...) 서버들이 좀 원활하게 웹서비스를 돌릴 수 있도록 나온 수많은 아이디어중 하나이다. 일반적으로 아파치 웹서버에 요청이 들어오면 다음의 순서를 거쳐 페이지가 뜨게 된다.

  1. 요청 검사
  2. virtualHost rule 확인
  3. 실제 존재하는 경로에 매치되는 파일 또는 디렉토리가 있는지 확인
  4. 확장자 또는 파일 타입 검사
  5. 해당 파일 타입을 처리할 수 있는 핸들러가 모듈로 등록되어 있는지 확인
    1. 등록되어 있는 경우 해당 모듈을 메모리로 불러옴
    2. 등록되어 있지 않은 경우 해당 파일이 CGI인지 확인하고 맞다면 실행함.
  6. 파일의 제어를 넘김

저 과정에서 CGI를 띄우는 부분을 생각해보면, 매번 요청이 CGI인지 확인한 후 프로그램을 불러오고, 실행한 후 종료한다. fastCGI의 1차적인 아이디어는 램에 계속 CGI를 올려 놓는 것이다. 그러면 저 중에서 파일을 불러오고 메모리에서 삭제하는 부분이 줄어든다. CGI가 굉장히 자주 불리는 경우 파일 실행과 종료에 드는 로드를 굉장히 실용적인 아이디어이다.

여기서 조금 더 아이디어를 내면, 기존의 아파치 모듈로 동작하는 PHP나 ruby등의 해석기를 CGI로 만들고, 항상 메모리에 올려놓는 것을 생각할 수 있다. 현재의 fastCGI 모듈은 이러한 식으로, CGI 자체의 가속뿐만 아니라 다른 웹 인터프리터 언어의 해석기들을 페이지가 열릴 때 마다 호출하고 끝내는 부분을 줄여주기 위해 많이 사용된다.

이 서버에 fastCGI를 설정한 것은 텍스트큐브 호환성 개선때문에 테스트베드가 필요해서였다. 처음 구현되던 시절에는 워낙 불안정해서 실제로 쓸 생각조차 안하고 있었는데, 요새는 굉장히 좋아졌다는 이야기를 듣고 작년에 도전해 보았다.

처음 설정할 때는 크게 체감하지 못했는데, 얼마전 원래 방식으로 서버를 돌리려고 하니 꽤 답답함이 느껴졌다. 혹시 사양이 낮은 서버 (누비마루 같은 경우 웹서버를 포함해서 온갖것을 다 돌리지만 사실 펜티엄 3 시절의 셀러론 1.1GHz이다.) 에서 웹서버를 돌릴 경우 한 번쯤 고려해도 좋을 방법이다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/10 16:22 2008/06/10 16:22
트랙백이 없고, 댓글이 없습니다.
ATOM Icon 이 글의 댓글이나 트랙백을 계속 따라가며 보고 싶으신 경우 ATOM 구독기로 이 피드를 구독하세요.