![Page 1: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/1.jpg)
ISUCON4 予選問題でアプリケーションコードを変更せず、”my.cnf”に1行だけ足して、予選通過ラインを突破するの術
MySQL Casual Talks vol.7ISUCON芸人 長野雅広 a.k.a kazeburo
![Page 2: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/2.jpg)
ISUCON知らない方?
![Page 3: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/3.jpg)
![Page 4: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/4.jpg)
何を変更したのか• インデックスの追加
• アプリケーションをPerlに変更
• アプリケーションサーバの変更と起動設定のチューニング
• nginx での画像/CSS/JavaScript配信
• nginx <=> アプリケーションサーバ間をTCPからunix domain socket に
• my.cnfのチューニング
![Page 5: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/5.jpg)
もし、my.cnf を変更しなかったら?
![Page 6: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/6.jpg)
Benchmark04:02:01 type:info message:launch benchmarker04:02:01 type:warning message:Result not sent to server because API key is not set04:02:01 type:info message:init environment04:02:10 type:info message:run benchmark workload: 804:03:10 type:info message:finish benchmark workload: 804:03:15 type:info message:check banned ips and locked users report04:03:17 type:report count:banned ips value:61904:03:17 type:report count:locked users value:441304:03:18 type:info message:Result not sent to server because API key is not set
04:03:18 type:score success:189510 fail:0 score:40937
![Page 7: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/7.jpg)
40,937 / 37,808
予選通過ライン
( ゚д゚)超えちゃった
![Page 8: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/8.jpg)
タイトル変更
![Page 9: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/9.jpg)
ISUCON4 予選問題でアプリケーションコードを変更せず、”my.cnf ”に1行だけ足して、さらに高得点を狙う
![Page 10: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/10.jpg)
ISUCON4のアプリケーション
• いすこん銀行• ログイン機能のみ• パスワードリスト攻撃• ログイン失敗の多いIPアドレスを拒否、アカウントロックする
![Page 11: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/11.jpg)
ISUCON4のアプリケーション
• MySQLからみると
• ログインログの書き込みが発生• 処理データ量は 40MB 程度
![Page 12: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/12.jpg)
MySQL のバージョン
$ rpm -qa|grep mysqlmysql55-libs-5.5.40-1.3.amzn1.x86_64mysql-devel-5.5-1.6.amzn1.noarchmysql55-server-5.5.40-1.3.amzn1.x86_64mysql55-common-5.5.40-1.3.amzn1.x86_64mysql55-5.5.40-1.3.amzn1.x86_64mysql55-devel-5.5.40-1.3.amzn1.x86_64mysql-server-5.5-1.6.amzn1.noarch 5.5.40
![Page 13: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/13.jpg)
my.cnf
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksymbolic-links=0
max_allowed_packet=300M
[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
![Page 14: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/14.jpg)
1行追加するとしたら?やってみた
![Page 15: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/15.jpg)
innodb_buffer_pool_size = 1G
![Page 16: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/16.jpg)
41,359 / 40,937デフォルト 128MB なので増やすメリット大きくない
![Page 17: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/17.jpg)
innodb_#ush_log_at_trx_commit = 2
![Page 18: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/18.jpg)
45,053 / 40,937EC2 で Storageは HDD なのでIOが遅延できる効果は大きい
![Page 19: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/19.jpg)
innodb_#ush_log_at_trx_commit = 0
![Page 20: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/20.jpg)
45,792 / 40,937
“2” ですでに十分だった?
![Page 21: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/21.jpg)
innodb_#ush_method=O_DIRECT
![Page 22: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/22.jpg)
40,726 / 40,937
変わらない。次への伏線です
![Page 23: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/23.jpg)
innodb_#ush_method=nosync
![Page 24: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/24.jpg)
45,711 / 40,937innodb_#ush_log_at_trx_commit = 0 と
だいたい同じ効果?
![Page 25: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/25.jpg)
innodb_doublewrite = 0
![Page 26: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/26.jpg)
40,921 / 40,937
変わらず
![Page 27: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/27.jpg)
innodb_max_purge_lag=100000
![Page 28: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/28.jpg)
40,558 / 40,937
変わらず
![Page 29: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/29.jpg)
innodb_max_dirty_pages_pct=99
![Page 30: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/30.jpg)
41,236 / 40,937
変わらず
![Page 31: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/31.jpg)
innodb_log_$le_size=32M
![Page 32: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/32.jpg)
40,724 / 40,937
変わらず
![Page 33: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/33.jpg)
結果
![Page 34: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/34.jpg)
ISUCONにおける王道設定
innodb_#ush_log_at_trx_commit = 0innodb_#ush_method = nosync
![Page 35: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/35.jpg)
それはちょっと。。
![Page 36: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/36.jpg)
ISUCONにおける王道設定
innodb_buffer_pool_size = 1GBinnodb_#ush_log_at_trx_commit = 2
innodb_#ush_method = O_DIRECT
![Page 37: ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術](https://reader034.vdocuments.net/reader034/viewer/2022052413/55a206d51a28abc5788b4635/html5/thumbnails/37.jpg)
ご清聴ありがとうございました