Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ISUCON4 予選問題でアプリ 
ケーションコードを変更せ 
ず、”my.cnf”に1行だけ足し 
て、予選通過ラインを突破 
するの術 
MySQL Casual Talks vol.7 
ISUCON芸人 長野雅広 a.k.a kazeb...
ISUCON知らない方?
何を変更したのか 
• インデックスの追加 
• アプリケーションをPerlに変更 
• アプリケーションサーバの変更と起動設定のチューニング 
• nginx での画像/CSS/JavaScript配信 
• nginx <=> アプリケーシ...
もし、my.cnf を 
変更しなかったら?
Benchmark 
04:02:01 type:info message:launch benchmarker 
04:02:01 type:warning message:Result not sent to server 
because...
予選通過 
ライン 
40,937 / 37,808 
( ゚д゚) 
超えちゃった
タイトル変更
ISUCON4 予選問題でアプリ 
ケーションコードを変更せ 
ず、”my.cnf ”に1行だけ足 
して、さらに高得点を狙う
ISUCON4のアプリケーション 
• いすこん銀行 
• ログイン機能のみ 
• パスワードリスト攻撃 
• ログイン失敗の多いIPアドレスを拒 
否、アカウントロックする
ISUCON4のアプリケーション 
• MySQLからみると 
• ログインログの書き込みが発生 
• 処理データ量は 40MB 程度
MySQL のバージョン 
$ rpm -qa|grep mysql 
mysql55-libs-5.5.40-1.3.amzn1.x86_64 
mysql-devel-5.5-1.6.amzn1.noarch 
mysql55-server...
my.cnf 
[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
symbolic-links=0 
max_allowed_packet=300M 
[my...
1行追加するとしたら? 
やってみた
innodb_buffer_pool_size = 1G
41,359 / 40,937 
デフォルト 128MB なので 
増やすメリット大きくない
innodb_#ush_log_at_trx_commit = 2
45,053 / 40,937 
EC2 で Storageは HDD なので 
IOが遅延できる効果は大きい
innodb_#ush_log_at_trx_commit = 0
45,792 / 40,937 
“2” ですでに十分だった?
innodb_#ush_method=O_DIRECT
40,726 / 40,937 
変わらない。次への伏線です
innodb_#ush_method=nosync
45,711 / 40,937 
innodb_#ush_log_at_trx_commit = 0 と 
だいたい同じ効果?
innodb_doublewrite = 0
40,921 / 40,937 
変わらず
innodb_max_purge_lag=100000
40,558 / 40,937 
変わらず
innodb_max_dirty_pages_pct=99
41,236 / 40,937 
変わらず
innodb_log_$le_size=32M
40,724 / 40,937 
変わらず
結果
ISUCONにおける王道設定 
innodb_#ush_log_at_trx_commit = 0 
innodb_#ush_method = nosync
それはちょっと。。
ISUCONにおける王道設定 
innodb_buffer_pool_size = 1GB 
innodb_#ush_log_at_trx_commit = 2 
innodb_#ush_method = O_DIRECT
ご清聴ありがとうございました
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
Upcoming SlideShare
Loading in …5
×

ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術

15,352 views

Published on

Published in: Internet
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術

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

×