MaxClients가 가득 차도 localhost/server-status를 얻을 수 있습니까?

MaxClients가 가득 차도 localhost/server-status를 얻을 수 있습니까?

현재 처리 중인 (유휴) 요청 수를 감지하는 모니터링 시스템을 구축 중입니다. 이를 감지하기 위해 사용하는 방법은 http://에 연결하는 것입니다.로컬호스트/서버 상태 .

문제는 Apache가 더 이상 새로운 연결을 제공할 수 없는 경우(예: MaxClients상단에 도달) Apache 통계를 어떻게 감지할 수 있느냐는 것입니다. Apache가 MaxClientslocalhost의 연결 구성을 무시할 만큼 똑똑할 수 있습니까 ?

도움을 주시면 감사하겠습니다.

답변1

나는 대답이 '아니요'라고 생각합니다. 그 이유는 두 가지입니다(세 번째 이유는 울퉁불퉁한 이유입니다).

  1. 요청 /server-status/에 면역이 있지만 MaxClients클라이언트 수는 증가했다고 가정합니다. 그러면 요청을 통해 DoS 아파치가 너무 쉬워져서 합법적인 요청을 처리할 수 없게 됩니다. (그리고 요청이 훨씬 더 지나갈 수 있기 때문에 MaxClients실제 요청에 응답할 가능성이 없습니다.)

  2. Apache는 열린 연결 수 [일부 기능]에 따라 클라이언트 수를 가질 가능성이 높습니다(하나의 연결은 :80한 번에 하나의 요청만 보낼 수 있지만 KeepAlive이를 재사용할 수 있으므로 하나의 TCP 연결을 여는 것은 본질적으로 하나의 클라이언트입니다). 헤더를 읽기 전에 이를 확인합니다(공간이 있으면 요청을 처리하도록 위임합니다. 공간이 없으면 빠르게 실패합니다).

  3. 연결이 너무 많아지면 service httpd fullstatus작동이 매우 느리거나 전혀 작동하지 않습니다. :-)

답변2

Apache 서버와의 통신에 다른 인터페이스가 사용되도록 Apache 모듈을 작성하거나 mod_status를 수정해야 할 수도 있습니다. posix 신호와 공유 메모리 또는 파일을 사용하여 통계를 요청하고 가져올 수 있습니다.

관련 정보