지난 이틀 동안 Apache 서버 세트를 구축했는데, 각 서버는 4G의 메모리를 가지고 있으며, 처음에 설정한 연결 수가 너무 적어 나중에 사용자 요청에 응답하는 데 오랜 시간이 걸렸습니다. , Apache 2.0 59 구성 파일 httpd.conf를 수정했습니다.
인용하다
# 프리포크 MPM
# StartServers: 시작할 서버 프로세스 수
# MinSpareServers: 예비로 유지되는 최소 서버 프로세스 수
# MaxSpareServers: 예비로 유지되는 최대 서버 프로세스 수
# MaxClients: 시작이 허용되는 최대 서버 프로세스 수
# MaxRequestsPerChild: 서버 프로세스가 처리하는 최대 요청 수
시작서버 10
최소 예비 서버 10
MaxSpareServers 15
서버한도 2000
맥스클라이언트 2000
MaxRequestsPerChild 10000
httpd 프로세스 수(즉, Apache가 프리포크 모드에서 처리할 수 있는 동시 요청 수)를 확인합니다.
리눅스 명령:
인용하다
ps -ef | grep httpd -l |
반환 결과 예:
1388
Apache가 1388개의 동시 요청을 처리할 수 있음을 나타냅니다. 이 값은 로드에 따라 Apache에서 자동으로 조정될 수 있습니다. 내 그룹에 있는 각 서버의 최대 값은 2002에 도달했습니다.
Apache의 동시 요청 수와 해당 TCP 연결 상태를 확인합니다.
리눅스 명령:
인용하다
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) 인쇄 a, S[a]}'
(이 진술의 출처는 다음과 같습니다. 시나인터랙티브커뮤니티사업부 기술이사 왕씨한테서 받았는데 너무 좋네요)
반환 결과 예:
LAST_ACK 5
SYN_RECV 30
1597년 설립
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
SYN_RECV는 처리 대기 중인 요청 수를 나타내고, ESTABLISHED는 정상적인 데이터 전송 상태를 나타내며, TIME_WAIT는 처리되어 시간 초과가 끝나기를 기다리는 요청 수를 나타냅니다.
TCP 상태의 변화는 다음 그림에서 생생하게 확인할 수 있습니다.
STATUS: DESCRIPTION CLOSED: 연결이 활성화되어 있지 않거나 진행 중입니다. LISTEN: 서버가 수신 호출을 기다리고 있습니다. SYN_RECV: 연결 요청이 도착했으며 확인을 기다리고 있습니다. SYN_SENT: 애플리케이션이 시작되었으며 연결이 열려 있습니다. ESTABLISHED: 정상적인 데이터 전송 상태 FIN_WAIT1: FIN_WAIT2: 상대방이 해제에 동의했습니다. ITMED_WAIT: 모든 패킷이 죽을 때까지 기다립니다. CLOSING: 양쪽이 동시에 닫으려고 합니다. TIME_WAIT: 상대방이 해제를 초기화했습니다. LAST_ACK: 모든 패킷이 죽을 때까지 기다립니다.