문제

정적 미디어 파일을 제공하고 django 요청을 Apache 2.2 Prefork MPM 서버를 MOD_WSGI로 실행하는 NGINX 프론트 엔드가있는 작은 VPS 서버가 있습니다.

하나의 (매우) 작은 사이트가로드되고 작동하면 현재 143MB의 256MB RAM을 사용하고 있습니다.

사용 top 명령 나는 Apache가 사용 가능한 RAM의 52.9%를 사용하고 있으며 Memcache는 2.1%를 사용하고 있음을 알 수 있습니다.

이 서버에 꽤 많은 Django 프로젝트를 설치할 계획이라는 점을 고려할 때 Apache가 사용하는 RAM의 양을 다듬기 위해 할 수있는 일이 있는지 궁금합니다.

도움이 되었습니까?

해결책

Apache를 고수하고 싶다면 거의 어려움의 순서로 몇 가지 제안을합니다.

  • Prefork 대신 Apache Worker MPM을 사용하십시오. 클라이언트 연결 당 사용되는 실제 메모리는 낮지 만 Linux에서 Apache에 할당 된 가상 메모리는 각 스레드의 스택에 대해 8MB Linux가 할당되어 매우 높을 수 있습니다. VPS가 실제 RSS (거주 세트 크기) 메모리보다는 뇌 가상 메모리가 아닌 경우 실제로 중요하지 않습니다. 이 경우 스레드 스택 크기를 낮추는 방법을 배울 수 있습니다. 여기 (메모리로 제한 된 VPS 섹션 아래).
  • Apache 구성 파일을 편집하고 STARTHERVERS, MAXCLIENTS, MINSPARETHREADS 및 MAXSPARETHREADS 설정을 대략 비율로 줄입니다. 적절한 수준은 원하는 메모리 사용량과 봉사 할 수있는 동시 클라이언트 수 사이의 균형입니다.
  • 로 전환 mod_wsgi (데몬 모드에서) mod_python 대신.

다른 팁

레코드의 경우 OP의 MPM이라는 용어 사용은 무의미합니다. Apache의 MPM은 옵션이 아니며 Apache를 사용할 때 항상 MPM을 사용합니다. 선택은 사용중인 MPM입니다. UNIX에서 두 개의 주요 MPM 또는 멀티 프로세싱 모듈은 프리 포크 및 작업자입니다. Windows에서는 Winnt MPM이 항상 사용됩니다. 다양한 MPM에 대한 자세한 내용은 Apache 웹 사이트의 Apache 문서를 참조하십시오. 그러나 mod_wsgi의 맥락에서, 당신은 읽는 것이 더 나을 수 있습니다.

http://code.google.com/p/modwsgi/wiki/processesandthreading

간단히 말해서 :

  • Prefork MPM은 멀티 프로세스/단일 스레드입니다.
  • 작업자 MPM은 멀티 프로세스/멀티 스레드입니다.
  • 단일 프로세스/멀티 스레드의 Winnt MPM.

사용을 고려할 수 있습니다 산란 배포를 위해.

FastCGI에서 Django를 실행할 수 있습니다. 그런 다음 Nginx는 Apache를 통과하는 대신 직접 운전할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top