ISUCONとリアルISUCONへの備え

@kazuph

自己紹介

自己紹介

主に使ってるアイコン

left right

自己紹介

自己紹介: 作成してるIoTプロダクト

akerun

今日は

前提

ISUCONとリアルISUCON

isucon

ISUCONとリアルISUCON

それら過去のISUCONを振り返る

ISUCON振り返り

ISUCON振り返り

リアルISUCON振り返り

読んだ書籍

sicon sicon sicon

実際の作業

ここからはごちゃまぜです

0. ログだし

0. ログだし

# LTSVなログ前提
LOG_BASE=/home/isucon/tmp

# stat url
URL_STAT=`cat $LOG_BASE/access.log | perl -F"\t" -anle '{($key = $F[3]) =~ s/(req:|HTTP\/1\.1)//g;$key =~ s/[0-9]//g;$key =~ s/ //g;$key =~ s/\//\//g;$c{$key}++;$t{$key}+=substr($F[8],6,5)}END{for(keys %t){print int($t{$_})." ".int($t{$_}/$c{$_}*1000)." ".$c{$_}. " $_";}}' | sort -nr | tee tmp/nginx-repo.txt.${DATE}`
echo "sum sec  ave msec  count  URL"
echo "$URL_STAT" | while read timesum timeave count url; do
    echo "$timesum  $timeave  $count  $url"
done

0. ログだし

sum[sec] ave[msec] count URL
1128    1939    582     GET/
69      43      1598    GET/memo/
63      50      1247    GET/recent/
34      147     234     GET/mypage
2       9       234     POST/memo
1       0       1528    GET/js/jquery.min.js
1       0       1528    GET/css/bootstrap.min.css
0       3       234     POST/signin
0       2       234     POST/signout

0. ログだし

0. ログだし

[mysqld]
slow_query_log=ON
slow_query_log_file=/tmp/mysql-slow.log
long_query_time=0 #出力する秒数, 0秒なのですべて

0. ログだし

pt-query-digest tmp/mysql-slow.log --explain h=localhost, u=isucon --database=isucon | tee tmp/ptqd.log

実行結果

0. ログだし

1. 底上げ

2. ボトルネック探し

3. 可視化・自動化

3. 可視化・自動化

4. 禁断のパワーに挑戦したい

名言によるまとめ

推測するな測定せよ

ご清聴ありがとうございました