끔찍한 256 최대 연결에 도달 한 후 수행 할 작업 Apache Limit


9

서버 리소스가 양호하지만 내 사이트가 왜 느리게 응답하는지 파악하려고 머리를 긁은 후 마침내 Apache 상태를 확인하고 다음을 발견했습니다.

78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers

내 아파치가 문자 그대로 연결로 최대 값을 초과 한 것으로 보입니다. 내 사이트를 방문하려는 사람은 Apache가 다시 해제 될 때까지 "대기 목록"에 표시됩니다.

두 가지 옵션이있는 것 같습니다.

A) 최대 연결 제한을 256 이상으로 올리십시오. 이 기사 에 따르면 쉽지는 않습니다.

기본적으로 MaxClients 매개 변수는 컴파일 된 하드 제한이 256입니다. 그러나 Apache를 다시 컴파일하여 변경할 수 있습니다. 일부 배포 또는 호스팅 회사는 큰 부하에 대처하기 위해 512 또는 1024와 같은 매우 높은 값으로이 제한을 높입니다.

B) 너무 많은 시간이 걸리는 스크립트를 찾으십시오. 대부분의 아파치 프로세스가 나타나서 다시 사라지기 때문에 이것은 훨씬 까다로워 보입니다. 또한 내 사이트 PHP 스크립트는 꽤 잘 최적화되어 있습니다 ... 그리고 다시 한 번 서버 리소스는 좋습니다.

Server load 2.69 (8 CPUs)   
Memory Used 25.33% (2,039,108 of 8,048,804) 
Swap Used   1.32% (54,156 of 4,095,992)

어떤 옵션 (둘 중 하나)을 선택해야하며 어떻게해야합니까?

편집하다

추가 정보 : 서버 버전 : Apache / 2.2.23 (Unix) mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635

HTTP Conf : http://pastebin.com/yBeLt6mP

Parital 요청 샘플 : http://pastebin.com/vzUVDMPR

붙여 넣기가 이상하게 표시되면 텍스트 줄 바꿈을 전환합니다.


인용 한 기사는 ~ 6 세입니다. 소프트웨어 변경. Shane의 답변을 참조하십시오.
크리스 S

1
@ChrisS 훨씬 더 오래된 것-컴파일 ​​된 한계는 1.x (2002 년 2.0에서 나옴)이며 기사는 2.0 문서에 명시 적으로 연결됩니다.
Shane Madden

답변:


10

그 기사는 정확하지 않습니다. MaxClientsprefork MPM을 사용할 때 256 이상으로 올릴 수 있습니다 (현재 문제에 대한 설명에 따라 사용한다고 가정합니다). 로부터 문서 :

스레드되지 않은 서버 (예 : 프리 포크)의 경우 MaxClients요청을 처리하기 위해 시작될 최대 자식 프로세스 수로 변환됩니다. 기본값은 256입니다. 높이려면을 높여야 ServerLimit합니다.

ServerLimit하드 컴파일 된 제한이 있지만 서버가 다른 병목 현상을 일으키지 않고 도달 할 수있는 방법을 넘어서는 것입니다. 문서 :

ServerLimit 20000prefork MPM 200000의 경우 서버로 컴파일하기에는 제한이 있습니다. 이것은 오타로 인한 불쾌한 영향을 피하기위한 것입니다.

따라서 고객 한도를 512와 같이 늘리려면 다음을 수행하십시오.

MaxClients 512
ServerLimit 512

프리 포크 이외의 MPM이 확장에 더 적합하므로 사용중인 MPM도 살펴보십시오. 자세한 내용은 여기 를 참조하십시오.


core.c 및 worker.c가 실행되는 것을 httpd -l봅니다. 작업자 MPM을 실행한다는 의미입니까?
kmoney12

실제로 @hellohellosharp -이 경우 잠재적으로 조정하려는 것 MaxClients, ServerLimit, ThreadsPerChild,와 ThreadLimit. 현재 작업자 구성을 제공 할 수 있습니까 httpd.conf?
Shane Madden

예 ... 공개적으로 게시 할 때 위험이 있습니까? 희망을 갖고, 여기있다 : pastebin.com/yBeLt6mP
kmoney12은

아니, 대부분의 httpd.conf 파일을 게시하는 데 문제가 없습니다. 비밀번호 / 사용자 이름 등의 주석과 같은 이상한 점이 없는지 확인하십시오. 이것들은 때때로 프록시 구성 섹션 등에서도 발생합니다. 많은 사람들이 IP와 도메인 이름도 편집하고 싶어합니다. 그래서 관심을 끌지 않습니다
Chris S

1
상태 모듈은 이러한 세부 정보를 표시 할 수 있습니다.
ETL

-1

nginx 또는 lighttpd와 같은 리버스 프록시를 사용하면 아파치보다 더 많은 연결을 처리 할 수 ​​있습니다. 사이트에서 htaccess를 사용하는 방법에 따라 fcgi 및 forego apache와 함께 nginx / lighttpd를 사용할 수도 있습니다.


4
정말?? 그는 두 줄의 구성을 추가해야하며 httpd.conf솔루션은 그가 실행중인 대부분의 소프트웨어를 제거하고 교체하는 것입니까?! 모든 소프트웨어에는 문제가 있지만 교육을받지 않으면 잘못 사용하면 문제가 더 악화됩니다.
Chris S

궁극적으로 nginx는보다 적극적인 연결을 처리 할 수 ​​있으며 OP를 사용하여 무엇을 결정해야하는지 제안했습니다.
Shoshomiga
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.