ISUCON (Iikanjini Speedup contest)
- 与えられたWebアプリを一番速くした人が勝ち
- 2,3人1チーム
- 8時間
詳しくは、公式ブログへ
なぜラズパイでISUCONか
- ラズパイはずっと欲しかったから
- 夜中にAmazon見ててぽちったから
- 前回参加したISUCONは諸事情で1,2時間しか参加できなかったから
- ラズパイはずっと欲しかったから
目的
- ラズパイを触る
- ラズパイでISUCONができるようにする
ラズパイの購入に関して注意
- 意外と販売元によって値段や付属品が違うのでちゃんと見たほうが良い。
- Physical Computing Labが良さそう
ラズパイのセットアップ
OSダウンロード
今回はサーバ用途なので、ラズパイ公式サイトのダウンロードページより、Raspbian Stretch LiteをDLしました。
Micro SDにOSの書き込み
- Macの場合
- ddコマンド 例
sudo dd if=2017-11-29-raspbian-jessie-lite.img of=/dev/sdb bs=4m
- ddコマンド 例
- Windowsの場合
- Win32DiskImagerなどを使う
接続
起動
ラズパイの設定
- 無線接続設定 - 諸事情により有線でつなげなかった
- CtrlとCapsの入れ替え
- 日本語化
- apt update, apt upgrade, apt dist-upgrade
全て終わったら一度SDカードのイメージのバックアップを取っておくと良いかと思います。
ISUCON 7予選環境の構築
ISUCON公式のgithubがあるみたいなので、その予選問題7をクローンしました。
後は基本的にREADME通りやれば、構築できます。以下紹介する部分だけラズパイ用に変える必要がありました。
- パッケージ名
- libmysqlclient-devをdefault-libmysqlclient-devに変更
- GoのビルドはARM用に
xbuild/go-install –f 1.9 /home/isucon/local/go linux armv6l
- 初期データの投入に関して
- ラズパイのメモリーが1Gのため初期データを投入しようとするとMySQLが
out of memory
を吐きます。どうしようか迷ったのですが、初期データファイルを分割して投入して解決しました。
- ラズパイのメモリーが1Gのため初期データを投入しようとするとMySQLが
$ cd isubata/bench
$ gunzip isucon7q-initial-dataset.sql.gz
$ cat isucon7q-initial-dataset.sql | tr ";" "\n" | tail -n +2 | head -n -1 > isucon7q-initial-dataset2.sql
$ sed "s/$/;/g" isucon7q-initial-dataset2.sql > isucon7q-initial-dataset3.sql
$ split -l 10 isucon7q-initial-dataset3.sql init_data.
$ for sql in `ls init_data.*`; do echo $sql; sudo mysql --default-character-set=utf8 isubata < $sql; done
もうやっつけ感。
あとは、webサーバーを起動して、ベンチマークを取れば...こけます!
ここからチューニング作業ですが、今回は時間の関係上ここまでで!