지난 이틀 동안 Apache 서버 세트를 구축했습니다. 각 서버는 4G 메모리를 사용하며 처음에 설정한 연결 수가 너무 적어 사용자 요청에 응답하는 데 오랜 시간이 걸렸습니다. 나중에 수정했습니다. Apache 2.0.59 구성 파일 httpd.conf:
# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 2000 MaxRequestsPerChild 10000
httpd 프로세스 수(즉, Apache가 프리포크 모드에서 처리할 수 있는 동시 요청 수)를 확인합니다.
Linux 명령:
ps -ef | grep httpd | wc -l
반환된 결과의 예:
1388
은 Apache가 로드에 따라 이 값을 자동으로 조정할 수 있다는 의미입니다. 내 그룹의 각 서버 수가 2002에 도달했습니다.
Apache의 동시 요청 수와 해당 TCP 연결 상태 보기:
Linux 명령:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
반환 결과 예:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
SYN_RECV는 처리 대기 중인 요청 수를 나타냅니다. ESTABLISHED는 정상적인 데이터 전송 상태를 나타냅니다. 처리되었으며 시간 초과가 끝나기를 기다리고 있습니다.
상태: 설명
CLOSED: 연결이 활성화되어 있지 않거나 진행 중입니다.
LISTEN: 서버가 수신 호출을 기다리고 있습니다.
SYN_RECV: 연결 요청이 도착했으며 확인을 기다리고 있습니다.
SYN_SENT: 애플리케이션이 시작되어 연결이 시작되었습니다
ESTABLISHED: 정상적인 데이터 전송 상태
FIN_WAIT1: 애플리케이션이 완료되었다고 합니다
FIN_WAIT2: 상대방이 해제에 동의했습니다
ITMED_WAIT: 대기 중 모든 패킷이 죽도록
CLOSING : 양쪽이 동시에 닫으려고 합니다
TIME_WAIT: 상대방이 릴리스를 초기화했습니다
LAST_ACK: 모든 패킷이 죽을 때까지 기다립니다