문제

요청 당 응답 시간이있는 웹 서버의 로그 파일이 있다고 가정 해 봅시다.

_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc

Bash Scripting을 사용하면 최상위 십자위를 찾을 수있는 쉬운 방법이 있습니까 (10-양자)? 다시 말해서 질문에 대답하는 것 : 요청의 가장 느린 10%를 제외하면 가장 느린 요청은 얼마나 느 렸습니까?

도움이 되었습니까?

해결책

awk '{print $2}' | sort -rn | perl -e '$d=.1;@l=<>;print $l[int($d*$#l)]'

Perl에서 모든 일을하는 것이 더 우아 할 것입니다. 임시 파일을 사용하려면 WC + Head/Tail을 사용하여 정렬 된 숫자 목록에서 Quantile을 선택할 수 있습니다.

다른 팁

나는 아마도 요청 필드에 의해 수치 적으로 정렬 될 것입니다. 선을 계산하고 끝에서 10% 인 줄을 잡을 것입니다.

FILE=responseTimes.log
TMPFILE=tmpfile
sort -k 2 -n $FILE > $TMPFILE
LINECOUNT=`wc -l $TMPFILE | sed -e 's/^ *//' -e 's/ .*$//'`
TARGETLINE=echo "$LINECOUNT * 9 / 10" | bc
sed -n "$TARGETLINE{p;q;}" $TMPFILE

그것이 당신이 찾고 있던 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top