Okinawa.rb Meetup 4/24
ISUCONのはじめかた話を聞いてきた。題材はprivate-isu。雑にメモ
ISUCON流れ
全体流れ
- sshの設定で公開鍵はgithubにあげとく作戦
- config設定(セッションが切れないようにするなど)
- アプリケーションのコードをgithubにアップする
- githubにあげたコードをローカルに持ってくる
- ローカルでサーバーと同じような状態にする
- ローカルでコードを修正できるようにする
- ベンチマーク実行する
- ブラウザから操作してみる
- ボトルネックを探す
- ローカルでコード改修する
- 環境にデプロイ
- ベンチマーク実行する
ローカルでアプリを動かせるようにする状態にするのがなんとなく難しそうだった。
MySQLメモ
- ダンプ
$ mysqldump -uroot isuconp > db.sql
- リストア
mysql> create database isuconp; mysql> quit $ mysql -uroot -proot -D isuconp < db.sql
- ポートフォワード
ローカルの3306にアクセスしたらサーバーのMySQLにアクセスするようにしたかったけど、なんか3306を指定したらエラーになってうまくいかなかったので、いったん13306を指定してる
shimabukuromegumi-no-MacBook-Pro:~ root# ssh -f -N -C -L 13306:localhost:3306 isucon@13.231.226.73 -p 22 shimabukuromegumi-no-MacBook-Pro:~ root# mysql -uroot -P 13306 -h 127.0.0.1 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 648 Server version: 5.5.49-0+deb8u1 (Debian) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
$ mysql.server start $ mysql.server stop $ mysql.server status
memcached メモ
isuconアプリをローカルで立ち上げる時にmemcachedがないっていうエラーになったので、導入した。(なぜ必要なのかはいまいちわかっていない)
- インストール
brew install memcached
- 起動
memcached
sinatraメモ
ローカルにisuconアプリを持ってきたあと、bundle install、bundle exec ruby app.rbで起動すると思ったけど、うまく起動しなかった。bundle exec rackup -p 8080とするとちゃんと起動した。(なんで起動しなかったのかよくわかっていないってのと、rackupってコマンドがなんなのかよくわかっていない)
cd isucon-pixiv/ruby bundle install --path=vendor/bundle bundle exec rackup -p 8080
ngx-mrubyメモ
isucon7の予選のsleep問題にrubyでも対策できるようにngx-mrubyを使えるのでは???という話。isucon7のsleep問題もいまいちよくわかっていなくて、なるほどわからん状態だけど、ngx-mruby気になる。
isucon7メモ
ISUCON 7 予選で ISUCON 初参加した結果を振り返る · GitHub
一見無駄に見える参照実装の sleep の意味に気づくとブレイクスルーすることができたと思います。
Goつかってたということもあって、sleepはとくに障害になりませんでした。
これがPerlやRubyといったprefork型のやつだと、/fetchの並列度によってはworkerが/fetchに専有されるみたいなのもありえたのですが、GoとNode.jsはその辺考えなくて済むのでそこは楽でしたね。 beatsync.net