2009-07-06 5 views
2

나는 아파치 작업자와 승객을 어떻게 사용합니까?

# worker MPM 
# StartServers: initial number of server processes to start 
# MaxClients: maximum number of simultaneous client connections 
# MinSpareThreads: minimum number of worker threads which are kept spare 
# MaxSpareThreads: maximum number of worker threads which are kept spare 
# ThreadsPerChild: constant number of worker threads in each server process 
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module> 
StartServers   2 
MaxClients   15 
MinSpareThreads  4 
MaxSpareThreads  5 
ThreadsPerChild  15 
MaxRequestsPerChild 50000 
</IfModule> 

<IfModule mpm_prefork_module> 
StartServers   5 
MinSpareServers  5 
MaxSpareServers  10 
MaxClients   150 
MaxRequestsPerChild 0 
</IfModule> 
지금 내가 여기 혼란 스러워요 내 apache2.conf의이 설정을했습니다.

  • 어떤 모듈을 어떤 조건으로로드합니까?
  • phusion guys가 작업자 모듈을 사용하도록 제안했습니다. 두 파일 모두 아파치 conf 파일에 존재하기 때문에 mpm_prefork_module에 주석을 달거나 그대로 두어야합니까? 다음

는 아파치에 대한 내 승객의 conf 파일 : 나는 Slicehost에에 256 메가 바이트 슬라이스에 단지 하나의 레일 2.3.2 응용 프로그램을 실행하는거야

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so 
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4 
PassengerRuby /usr/bin/ruby1.8 
PassengerMaxPoolSize 3 
PassengerPoolIdleTime 999999 
RailsFrameworkSpawnerIdleTime 0 
RailsAppSpawnerIdleTime 0 
  • . 아직 성능에 만족하지 않습니다. 위의 설정은 좋은거야 ??

답변

0

일반적으로 사람들은 VPS가 스왑을 때리기 시작하는지 묻습니다. 이 스레드는 "자유"와 "최고"를 사용하고 MPM 노동자로 전환, 꽤 도움이 재입니다

http://forum.slicehost.com/comments.php?DiscussionID=3313

이들은

http://wiki.ninjafocus.net/Ruby_on_Rails

에 대해 많은 이야기되지 않는 설정에 대한 유익한 정보

http://programming-gone-awry.blogspot.com/2009/06/how-to-save-much-ram-when-running-rails.html

2

a. httpd/apache/httpd2/apache2 -l을 실행하여 어떤 mpm이로드되었는지 확인하십시오 (보통 프리 포크 임).
b. 설치해야하는 작업자 모듈을 얻으려면 전에는 해본 적이 없지만 공존 할 수 없다는 것을 알고 있습니다.
c. 어떤 종류의 트래픽을 예상하는 경우 MaxClients (프리 포크 구성에서)를 약 20 (시작)으로 설정해야합니다. 그렇지 않으면 앱/승객이 트래픽이 많은 기간에 쓰러 질 것입니다.
d. 승객 설정을 위해, 나는

PassengerMaxPoolSize 2
PassengerPoolIdleTime으로 시작 했죠 0
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime이 무엇 0

가장 긴 메모리에 프레임 워크 Spawner를, 앱 Spawner를 및 응용 프로그램 인스턴스를 유지하다 가능한 시간이므로 비활성화 된 후 앱 인스턴스 나 프레임 워크를 다시 생성 할 필요가 없습니다 (사이트의 트래픽이 많지 않은 경우). 이것은 항상 켜짐 잡종 형식 설정을 실행하는 것과 거의 같습니다.

+0

은 너무 방금 -l 아파치/아파치/apachectl을/(아파치 명령은 무엇이든)를 실행 실행중인 MPM 내용은 아래 ... 홍리의 답변을 티 오프하면 모듈이 나열됩니다. 즐기십시오. – concept47

+0

나는 Ubuntu Intrepid를 사용 중이며 제안한대로 명령을 실행할 때 httpd/apache/httpd2/apache2 -l cmd를 찾을 수 없습니다. 내가 봤 거든 다른 cmd있어 apache2 -l 이것 역시 작동하지 않습니까? Is는 작동하도록되어 있습니까? 아니면 다른 cmd를 사용하여 어떤 MPM이 apache와 함께로드되어 있는지 확인하고 있습니까? – Autodidact

+0

커맨드 라인에서 아파치를 호출하는 방법은 여러 가지가 있습니다. 왜 모든 명령을 슬래시로 구분하여 넣을까요? 슬래시는 기계에서 작동하는 것을 찾을 때까지 각각 시도해야한다는 것을 의미합니다. apachectl -l 또는 apache2ctl -l도 작동합니다. – concept47

1

아파치가 prefork MPM을 사용하는지 또는 작업자 MPM이 컴파일 시간 옵션인지 여부. 런타임시 MPM을 변경할 수 없으므로 MPM을로드 할 수 없습니다.

지시어는 "현재 MPM이 xxx이면이 블록 내부의 구성을 사용하고 그렇지 않으면이 블록을 완전히 무시합니다"를 의미합니다.

그래서 작업자 MPM을 사용하려면 프리프 로크 버전을 제거하고 작업자 버전을 설치해야합니다.

+0

passers-by에 대해 다음과 같이 설명합니다. init 스크립트에서 작업자를 선택할 수있게 해주는 최소한 하나의 배포판을 알고 있습니다. Red Hat EL (따라서 CentOS 외)은/usr/sbin/httpd, /usr/sbin/httpd.worker 및 /usr/sbin/httpd.event를 제공합니다. 활성 MPM은/etc/sysconfig/httpd에서 설정할 수 있습니다. – Martijn

+0

Debian/Ubuntu에서는 apache2-mpm- * 패키지를 사용하여 다른 MPM을 설치할 수 있습니다. 하나를 설치하고 다른 것을 제거하십시오. – Kevin

관련 문제