서버가 뻗은 김에 복구하면서 몇가지 설정 수정이 있었습니다.
예전에 연구 목적으로 돌리기 위하여 서버의 퍼포먼스를 제한해 둔 부분을 풀었습니다. PHP 인스턴스 하나가 사용할 수 있는 메모리를 줄이고, 대신 fastCGI 인스턴스를 두 배로 늘렸습니다. 로딩 속도가 좀 많이 달라지게 되었습니다.
누비마루 사용자 분들께서는 참고하세요. :)
*
fastCGI는 가난한(...) 서버들이 좀 원활하게 웹서비스를 돌릴 수 있도록 나온 수많은 아이디어중 하나이다. 일반적으로 아파치 웹서버에 요청이 들어오면 다음의 순서를 거쳐 페이지가 뜨게 된다.
- 요청 검사
- virtualHost rule 확인
- 실제 존재하는 경로에 매치되는 파일 또는 디렉토리가 있는지 확인
- 확장자 또는 파일 타입 검사
- 해당 파일 타입을 처리할 수 있는 핸들러가 모듈로 등록되어 있는지 확인
- 등록되어 있는 경우 해당 모듈을 메모리로 불러옴
- 등록되어 있지 않은 경우 해당 파일이 CGI인지 확인하고 맞다면 실행함.
- 파일의 제어를 넘김
저 과정에서 CGI를 띄우는 부분을 생각해보면, 매번 요청이 CGI인지 확인한 후 프로그램을 불러오고, 실행한 후 종료한다. fastCGI의 1차적인 아이디어는 램에 계속 CGI를 올려 놓는 것이다. 그러면 저 중에서 파일을 불러오고 메모리에서 삭제하는 부분이 줄어든다. CGI가 굉장히 자주 불리는 경우 파일 실행과 종료에 드는 로드를 굉장히 실용적인 아이디어이다.
여기서 조금 더 아이디어를 내면, 기존의 아파치 모듈로 동작하는 PHP나 ruby등의 해석기를 CGI로 만들고, 항상 메모리에 올려놓는 것을 생각할 수 있다. 현재의 fastCGI 모듈은 이러한 식으로, CGI 자체의 가속뿐만 아니라 다른 웹 인터프리터 언어의 해석기들을 페이지가 열릴 때 마다 호출하고 끝내는 부분을 줄여주기 위해 많이 사용된다.
이 서버에 fastCGI를 설정한 것은 텍스트큐브 호환성 개선때문에 테스트베드가 필요해서였다. 처음 구현되던 시절에는 워낙 불안정해서 실제로 쓸 생각조차 안하고 있었는데, 요새는 굉장히 좋아졌다는 이야기를 듣고 작년에 도전해 보았다.
처음 설정할 때는 크게 체감하지 못했는데, 얼마전 원래 방식으로 서버를 돌리려고 하니 꽤 답답함이 느껴졌다. 혹시 사양이 낮은 서버 (누비마루 같은 경우 웹서버를 포함해서 온갖것을 다 돌리지만 사실 펜티엄 3 시절의 셀러론 1.1GHz이다.) 에서 웹서버를 돌릴 경우 한 번쯤 고려해도 좋을 방법이다.