RHEL 및 Apache(httpd)를 사용하여 다음을 수행할 수 있는 방법이 있습니까?
- 어떤 v.host(도메인)가 들어오는 연결 수를 감지합니까?
며칠 동안 서버에서 들어오는 연결을 많이 받았고 다음을 통해 확인했습니다.
ps aux | grep httpd -c
734화
이것은 734
현재 들어오는 연결을 처리하는 Apache가 있다는 것을 의미하지만 문제는 10개의 Vhost(도메인)가 있다는 것입니다.
- 그렇다면 어느 도메인의 부하가 더 높습니까?
답변1
로그에 호스트 문자열을 포함하도록 액세스 로그 형식을 수정하겠습니다. 그렇다면 정렬하고 계산하는 것은 간단합니다 vhost
. 이것이 apache
제가 사용하는 구성 거짓말입니다.
# Modified log format with virtual host, execution time, and query params
LogFormat "%v:%p %a %T %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" local
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog /var/log/apache2/access.log local
이는 다음 명령을 사용하여 계산할 수 있습니다.
cut -d\t -f1 access.log | sort | uniq -c
또는 다음을 사용할 수 있습니다 awk
(시간 및/또는 기타 데이터별로 선택 가능).
awk '{print $1}' access.log | sort | uniq -c
또는 각 가상 호스트에 대해 별도의 액세스 로그를 사용하십시오. 활성 액세스 로그의 간단한 단어 수를 통해 귀하의 질문에 답할 수 있습니다.
현재 활동을 확인하려면 mod-status 플러그인을 활성화하고 URL을 사용하여 상태를 확인하세요 http://127.0.0.1/server-status
. 출력에는 각 슬롯에서 처리된 마지막 URL과 현재 상태가 포함됩니다. 이 정보는 현재 상태를 확인하는 데 사용될 수 있습니다. URL을 사용하는 출력은 http://127.0.0.1/server-status?notable
구문 분석하기가 더 쉬울 수 있습니다.
이 명령은 w3m -dump http://127.0.0.1/server-status?notable
멋진 텍스트 덤프를 제공합니다. 그러나 이러한 쿼리에는 wget
or 명령이 curl
자주 사용됩니다.