jeudi 11 avril 2013

STRACE OPENED WRITE FILE SED ANALYZER

Même bug depuis une grosse semaine :
un jboss tourne vite sur une vm centos et un physique debian
mais est lent sur une vm redhat 6, une vm redhat 5, un physique centos ;
ça tourne sur un processeur
la partie lecture d'un xml de 100M et fabrication des données de 1M dure 5 sec. ok
ensuite le templating et renvoi de ce html dure 10 secondes dans un cas et 2 minutes dans l'autres.
la question à résoudre est
mais qu'est ce qui écrit comme un malade dans le disque ?
faut voir avec strace (ok je verrai dtrace plus tard)


strace -tt -T -f -s 80  -trace=open,close,read,write -o stf.log

cat stf.log|
sed -e '/write/!d' -e 's/^................... //' |\
sed -e "/unfinish/ N;s/\n//p"|\
sed -e 's/,.* = /,=/' -e 's/ <[0-9\.]*>//' -e'/resumed/d' \
> stfw.log
egrep "( open\(| open resum)" stf.log|\
sed -e 's/^................... //' |\
sed -e 's/^open("//' |\
sed -e '/unfinished/ N;s/\n//'|\
sed -e's/".* = / = /' \
-e '/ENOENT/d' -e 's/<[0-9\.]*>//' > stfop.log
cat stfw.log|sed -e 's/,.*$//' -e 's/^.*write(//' -e's/[^0-9]//g'|sort -u > stfu.log
echo "" > stfc.log
for i in `cat stfu.log`;do grep -c "($i," stfw.log >> stfc.log; echo " : $i" >> stfc.log;done
cat stfc.log | sed -e '/:/!N;s/\n//p' |sed -e '/:/! d' | sort -run |head -n 5 > stft.log
for f in `cat stft.log|sed -e's/^.* : //'` ;do grep " = $f" stfop.log >> stfg.log;done
more stfg.log

il faudrait le réécrire en réel scanneur, parce que les mêmes numéros sont réalloués, et plusieurs processes différents peuvent avoir les mêmes numéros.

Aucun commentaire: