Question

Disons que j'ai un fichier journal à partir d'un serveur Web avec des temps de réponse par demande:

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

Y at-il un moyen facile avec les scripts bash pour trouver le décile supérieur (10 quantile )? En d'autres mots pour répondre à la question: Comment était la plus lente demande lente si je le plus lent 10 exclure% des demandes

Était-ce utile?

La solution

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

Il serait en effet plus élégant de faire tout cela en Perl. Si vous souhaitez utiliser un fichier temporaire, vous pouvez utiliser wc + tête / queue pour sélectionner le quantile dans la liste triée des numéros.

Autres conseils

Je serais probablement sorte numériquement par le champ de requête compter les lignes et prenez la ligne qui est de 10% par rapport à la fin.

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

L'espoir que ce que vous recherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top