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.

Let's start ISUCON

12 views

Published on

ISUCON初挑戦時の奮闘記

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Let's start ISUCON

  1. 1. はじめようISUCON! 1
  2. 2. whoami slack, hubot, Raspberry Pi    Google Home, AWS Name : endo (@do1nce) proxy, sales 2
  3. 3. 話すこと ISUCONとは? 問題紹介 傾向と対策 まとめ 3
  4. 4. ISUCONとは? 3人チームでWebAPチューニングの腕前を競う大会 主催:LINE 参加無料、優勝賞金100万円 開催場所 - 予選:オンライン  本選: LINEオフィス(新宿) 4
  5. 5. 競技内容 あたえられたWebAPスループットを向上させる - 実装言語は各チームが選べる - Perl, Ruby, Python, PHP, Node.js, Go レギュレーション - ミドルの入れ替え、設定変更、コード変更などは一切禁止しない - 複数台あるサーバーの役割の変更 - DBスキーマの変更やインデックスの作成・削除 - キャッシュ機構の追加、ジョブキュー機構の追加等 最後に採点したベンチマークのスコアを競う 5
  6. 6. ISUCON8予選 問題紹介 6
  7. 7. 出題アプリ: イベントチケット予約サイト 7
  8. 8. 8
  9. 9. VMスペック vCPU 2コア : Xeon(R)@ 2.40GHz メモリ 1GB ネットワーク帯域 1Gbps ディスク SSD ✕3台 ※自由に使っていい 9
  10. 10. OS/ミドルウェア CentOS 7.5.1804 MariaDB 5.5.60   ← H2O 2.2.5     ← 10
  11. 11. とりあえずベンチマーク 初期スコア: 500点くらい 11
  12. 12. リポジトリ作成 やるべき。(来年こそは・・) 無料でPrivateリポジトリ作れるGitLab良さそう 12
  13. 13. プロファイリング ボトルネックを探そうとした →準備していたalpというプロファイリングツールが使えない! →諦めて次の手段へ 13
  14. 14. リソース監視 netdata 14
  15. 15. ミドルチューニング CPUが50%付近で停滞していたのでワーカースレッドを2倍に →スコア900点くらい メモリもかなり余っていたのでクエリーキャッシュに割り当てた →スコア4000点くらい 15
  16. 16. アプリチューニング スロークエリログから探る get_event地獄 (公式解説より引用) get_event の実装はイベントIDに対して全席ぶんのステータスを含めてイベントのすべて の状態を返す実装になっていました。 すべてのシート(1000個)に対して都度クエリを発行する N+1問題になっているなど、かな り非効率的な処理をしています。 ※なんもわからん(チームメイトにやってもらった) 16
  17. 17. こういうことをどんどんやって高速化していく・・ (8時間) 17
  18. 18. 結果 0点! 終了30分前にベンチマークがコケるようになってしまい、 バグが取り切れず・・・ 構成管理しておけばよかった(戒め) 18
  19. 19. 何をすべきだったか ● h2o → nginxへ載せかえ ● AP/DBのサーバ分離 ○ ノード間通信にunixドメインソケットを使う ● 静的ファイルはnginxで返す ● DBにインデックス追加 場当たり的にチューニングしても効果なし →プロファイリング粘るべきだった・・・ 19
  20. 20. 試験対策 ConohaさんがISUCON予選VMイメージを提供してくれました! https://www.conoha.jp/guide/isucon8-qualify.php 20
  21. 21. まとめ ISUCONはインフラエンジニアだけのものではない 環境構築がカンタン & 解説がたくさんある ので勉強しやすい (と思って油断しているとh2oが急に飛び出してくる) 同僚、友達と気軽にチャレンジ! 21
  22. 22. Thank you for listening! 22

×