“AH00485 : MaxRequestWorkers가 아니라 점수 판이 가득 찼습니다”의 의미는 무엇입니까?


25

내 환경

  • CentOS 6.4 X86_64
  • 아파치 2.4.4
  • PHP 5.4.16 (FPM)
  • 2.00GHz에서 Intel Xeon E5-2620 2 개 (8 개 코어, 각 프로세서 당 16 개 스레드)
  • 48GB RAM 등록 메모리.
  • RAID0에 3 개의 하드 디스크 15RPM 145GB (바이오 제공)

흥미로운 변수

    <IfModule mpm_event_module>
        StartServers             2
        ThreadLimit             196
        MinSpareThreads         96
        MaxSpareThreads        192
        ThreadsPerChild         96
        MaxRequestWorkers      192
        MaxConnectionsPerChild   96
    </IfModule>

아파치 서버 상태

서버 버전 : Apache / 2.2.4 (Unix) OpenSSL / 1.0.1e mod_fastcgi / mod-fastcgi-SNAP-0910052141
서버 구축 : 2013 년 5 월 24 일 16:48:07


현재 시간 : 2013 년 6 월 17 일 월요일 09:48:11 COT
재시작 시간 : 2013 년 6 월 17 일 월요일 08:35:14 COT
Parent Server Config. 생성 : 1
상위 서버 MPM 생성 : 0
서버 가동 시간 : 1 시간 12 분 57 초
서버로드 : 0.05 0.10 0.09
총 액세스 : 14144-총 트래픽 : 349.7MB
CPU 사용량 : u.28 s.25 cu0 cs0-.0121 % CPU
3.23 요청 / 초 로드 -81.8 kB / 초-25.3 kB /
요청 현재 처리중인 1 요청, 191 유휴 작업자

  PID | Connections       | Threads     | Async connections
      | total | accepting | busy | idle | keep-alive | closing
  ==============================================================
18997 | 3     | yes       | 1    | 95   | 0          | 3
18485 | 0     | yes       | 0    | 96   | 0          | 0
  ==============================================================
Sum   | 3     |           | 1    | 191  | 0          | 3

오류 기록

오류 메시지는

[Mon Jun 17 09 : 32 : 45.680842 2013] [mpm_event : error] [pid 8574 : tid 140185091581760] AH00485 : MaxRequestWorkers가 아닌 점수 판이 가득 찼습니다.

몇 초마다 나타납니다. 이해가되지 않습니다. 어떻게 고칠 수 있습니까?

답변:


18

Apache 2.4.6에서도 동일한 문제가 발생했습니다. 서버를 모니터링하고 몇 시간 동안 설정을 조정하면 Apache에 버그가있을 수 있습니다. 서버 프로세스가 때때로 G상태 ( 완전히 마무리 됨)로 바뀌고 새 요청을 수락하기 위해 다시 시작하는 것처럼 보입니다 . 이는 정상적인 현상입니다. 정상이 아닌 것은 어떤 이유로 든 재시작하는 데 몇 분이 걸릴 수 있다는 것입니다. 몇 개의 서버 프로세스 만 실행 중이고 모두 G동시에 상태 로 전환되면 스코어 보드가 가득 차서 더 이상 요청을 서버 할 수 없습니다.

우리가 한 일은 서버 수를 늘리는 것이므로 서버 G가 동시에 상태에 들어갈 가능성은 적습니다 . 또한 MaxRequestWorkers각 서버 프로세스에 대해 최소 25 개의 스레드 ( )를 할당해야합니다 ( 기본값은 5 Serversx 25 ThreadsPerChild= 125 인 경우 MaxRequestWorkers). 원하는 ThreadsPerChild경우 변경할 수 있으며 기본 설정은 그대로 두었습니다. 충분한 스레드를 할당하지 않으면 추가 서버가 시작되지 않습니다. 우리는 왼쪽으로 MinSpareThreads25 기본값으로 기본값은을 위해 MaxSpareThreads당신이 값이이 설정을 수정한다면 이는 75 인 MaxSpareThreads의 합과 같거나보다 커야 MinSpareThreads하고 ThreadsPerChild. 또한 MaxRequestWorkers보다 작거나 같아야합니다 ServerLimit.

다음은 저희에게 도움이되었지만 귀하에게 가장 적합한 구성이 아닐 수도 있습니다.

StartServers 3
MinSpareServers 5
MaxSpareServers 10
ServerLimit 250
MaxRequestWorkers 250
MaxConnectionsPerChild 1000
KeepAlive Off

편집 : 이것은 httpd의 mpm_event 모듈에서 확인 된 버그 이며 구성을 통해 수정할 수는 없습니다.
연결된 버그 추적기 항목에는 패치가 추정되어 있으며 새 버전의 이벤트 모듈이 공식적으로 출시 될 때까지이 문제를 해결하는 방법에 대한 자세한 설명이 있습니다.


귀하의 MaxConnectionsPerChild설정은 생산 사용 방법이 너무 낮습니다. 또한 0 이외의 값으로 설정하면 내부적으로 메모리가 누출되므로 Windows에서만 수행됩니다.
rustyx

Apache error_log는 힌트도 제공합니다.MaxRequestWorkers of 40 is not an integer multiple of ThreadsPerChild of 25, decreasing to nearest multiple 25
dhaupin

1
MaxSpareServers / MinSpareServers는 mpm_event에 적용 할 수 없습니다. 숫자가 너무 낮아 MaxSpareThreads / MinSpareThreads가 될 수 없기 때문에 여기서 의미하는 바가 확실하지 않습니다.
Hamish Moffatt

Apache2 로그 회전시 데비안 에서도이 문제에 직면했습니다. support.plesk.com/hc/en-us/articles/…를
Yves Martin

이 답변에서 언급 된 패치는 2.4.25에서 병합되었습니다. 2.4.25를 사용하고 있지만 문제가 있기 때문에 여기에 있습니다. 분명히 그것은 logrotate에 의해 트리거 된 재로드에 나타 났으며 프로세스는 계속 씁니다 error.log.1. error.log재 장전 만 언급합니다.
Jérôme

3

같은 문제가 발생합니다.

Apache 2.4.7-1ubuntu4.4 on Ubuntu 14.04
Server Version: Apache/2.4.7 (Ubuntu)
Server MPM: event
Server Built: Mar 10 2015 13:05:59 

우리는 특히 아파치를 다시로드 하여이 동작을 일으킬 수 있습니다.

우리가 보는 것은 멈추지 않는 몇 가지 오래된 프로세스입니다.

root     28192  0.0  0.8 103772  8648 ?        Ss   Mar16   0:03 /usr/sbin/apache2 -k start
www-data  2530  0.3  2.1 865188 21516 ?        Sl   06:26   0:54  \_ /usr/sbin/apache2 -k start
www-data  2531  0.2  2.1 865436 21892 ?        Sl   06:26   0:51  \_ /usr/sbin/apache2 -k start
www-data  3299  0.3  2.0 864140 20628 ?        Sl   06:46   0:51  \_ /usr/sbin/apache2 -k start
www-data  7305  0.3  2.1 865100 21504 ?        Sl   08:36   0:37  \_ /usr/sbin/apache2 -k start
www-data 11952  0.2  1.8 863004 19268 ?        Sl   10:46   0:06  \_ /usr/sbin/apache2 -k start
www-data 13284  0.0  0.6 103772  6692 ?        S    11:18   0:00  \_ /usr/sbin/apache2 -k start
www-data 13553  2.1  2.0 866156 21248 ?        Sl   11:23   0:01  \_ /usr/sbin/apache2 -k start

'이전'및 '최신'PID 및 시작 시간을 확인하십시오. ^^

PID Connections     Threads Async connections
total   accepting   busy    idle    writing keep-alive  closing
7305    14  no  0   0   0   0   0
2530    13  no  0   0   0   0   0
3299    7   no  0   0   0   0   0
13553   65  no  17  8   0   25  25
2531    15  no  0   0   0   0   0
11952   10  no  0   0   0   0   0
Sum 124     17  8   0   25  25

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGW_WWWW__W_W_W_WWWWWWW__WWGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGG

0

복제본 데이터베이스 중 하나가 오프라인 상태가되어 시간이 초과되기 시작했을 때이를 확인하기 시작했습니다. 이것은 아파치에서 가질 리언 스레드를 묶어 놓았습니다. 사실이 다소 깨져서이 메시지를 받기 시작했습니다.

아마도 일반적인 경우는 아니지만이 오류를 보는 다른 사람들을 도울 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.