isucon夏期講習2015_1 概要編
TRANSCRIPT
![Page 1: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/1.jpg)
ISUCONの話 概要編
2015/08/19 ISUCON夏期講習
Treasure Data, Inc. 田籠聡(tagomoris)
![Page 3: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/3.jpg)
Satoshi "Moris" Tagomori (@tagomoris)
Fluentd, Norikra, MessagePack-Ruby,... Docker logging driver for Fluentd (docker v1.8)
Treasure Data, Inc.
![Page 4: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/4.jpg)
![Page 5: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/5.jpg)
で、誰?
• ISUCON1 (2011): 出題
• ISUCON2 (2012): 出題
• ISUCON3 (2013): 優勝
• ISUCON4 (2014): 優勝
• ISUCON5 (2015): 出題
![Page 6: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/6.jpg)
Qualify: Sep 26,27 (online) Final: Oct 31 (Hikarie)
![Page 7: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/7.jpg)
ISUCONとは• Webアプリケーション高速化コンテスト
• 1: blog
• 2: チケット販売サイト
• 3予選: wiki的サイト, 3決勝: 画像SNS
• 4予選: 不正ログイン検出, 4決勝: 動画広告配信
• ベンチマークで最高スコアを出せば勝利
![Page 8: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/8.jpg)
user4
user3
user2
user1
※イメージ
serverserver
server
serverserver
server
serverserver
serverserverserver
server
bench
高負荷アクセス 動作チェック
![Page 9: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/9.jpg)
![Page 10: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/10.jpg)
ぼくらのお仕事について• Webサービス/インターネットサービスの提供
• サーバサイドの環境構築・プログラミング
• ネットワーク, サーバ, OS
• Webサーバ,RDBMS, KVS 等のミドルウェア
• SQL, プログラムコード
• 要するにISUCONの作業対象ほとんど
![Page 11: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/11.jpg)
普段の仕事
• ネットワーク・サーバ・OS・ミドルウェア
• 環境の選定、セットアップ
• モニタリング、トラブル対応
• そのためのツール作り、自動化
• データセンタ設計、広域ネットワーク、セキュリティ、などなど
![Page 12: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/12.jpg)
ISUCON参加者の人々• インターネットサービス関連の人が多いが、様々
• 会社の同僚同士のチームが多い
• ほか、勉強会などでの知り合いなど
• スキル的にはいろいろ
• ITインフラ専門の人ばかりのチーム
• ITインフラ + アプリな人のチーム
![Page 13: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/13.jpg)
Webサービスにおけるパフォーマンス
• 「パフォーマンス」とは
• レスポンスタイム:
• 1リクエスト → 1レスポンス の時間
• スループット:
• 1秒間に返せるレスポンスの数
• 短いレスポンスタイム、高いスループット
• == 「良いパフォーマンス」
![Page 14: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/14.jpg)
パフォーマンス向上の重要性
• ユーザ体験の向上
• ユーザのアクションにすぐに反応する
• 入力内容が遅れず反映される
• 運用コストの低減
• 必要なサーバ台数の減少
• 高負荷サーバ減少→メンテナンス手間の削減
![Page 15: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/15.jpg)
ISUCONにおける パフォーマンス
is スコア
![Page 16: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/16.jpg)
スコア向上のためなら (レギュレーションの許す範囲内で)
何をやってもOK!
![Page 17: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/17.jpg)
スコア向上のためなら (レギュレーションの許す範囲内で)
何をやってもOK!
![Page 18: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/18.jpg)
レギュレーション
• よく読もう
• ISUCON4 予選レギュレーション
• http://isucon.net/archives/39979344.html
• ISUCON4 決勝レギュレーション
• https://gist.github.com/mirakui/4a935053c272469ed349
![Page 19: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/19.jpg)
Web Applicationとは
![Page 20: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/20.jpg)
benchmark tools
server
web server
application server
database server
![Page 21: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/21.jpg)
benchmark tools
serverweb server
serverapplication
server serverapplication
server
serverdatabase server
![Page 22: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/22.jpg)
Web Server• Apache httpd, Nginx, etc
• Serving static contents
• html, js/css, jpg/png, ...
• Reverse proxy for dynamic contents
• session control
• load balancing
• authentication
• caching
serverweb server
serverapplication
serverapplication
server
serverdatabase
server
![Page 23: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/23.jpg)
Application Server
• Server process executes application code
• html, HTTP API endpoint
• generating views
• calling SQL
• calling external api
• referring caches
serverweb server
serverapplication
serverapplication
server
serverdatabase
server
![Page 24: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/24.jpg)
Database Server
• MySQL, PostgreSQL, Oracle DB, MS SQLServer, ... (MongoDB, Cassandra, Redis, ...)
• storing data
• search/respond data serverweb server
serverapplication
serverapplication
server
serverdatabase server
![Page 25: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/25.jpg)
Cache Server
serverweb server
serverapplication
serverapplication
server
serverdatabase
server
cache server
• Memcached, Redis, Varnish cache, Squid, Apache httpd(mod_cache), Nginx
• caching whole page(html)
• caching parts of page(html)
• caching query results(objects)
• ...
• cache everything w/ high costs
![Page 26: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/26.jpg)
ISUCONで何をやるか
![Page 27: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/27.jpg)
教訓ぽいもの• やったことがないことはできない
• 普段どおりやる
• 普段やれないことをやる
• 何をやるべきか最初によく見る
• 何をやったかをちゃんと把握する
• いつでも戻れるようにしておく
![Page 28: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/28.jpg)
安全のために• 最初の状態を保存しておく
• ソースコード、初期データ、初期設定
• 初期スコア(出しておく!)と初期状態
• 何をやったか記録しておく
• ソースコードや設定のバージョン管理
• 相談内容の記録
![Page 29: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/29.jpg)
ボトルネックを見付けて 解決する
• HTTPD? connections? cpu? memory?
• Application? connections? cpu? memory?
• RDBMS? read? write?
• Network? data size? latency?
• ボトルネックは解決するたびに移っていく
![Page 30: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/30.jpg)
スコア• スコアを向上させる
• スコア算出ルールを見る
• 何を改善すべきかを考える
• スコアの揺れ
• 実行時の状況によって多少の揺れが出る
• わずかな差異(誤差)にまどわされない
• 改善は劇的に行う(×1.2倍 ○5倍!)
![Page 31: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/31.jpg)
制限時間• 時間があります
• 7時間で何もかもやるのは不可能
• 最初に落ち着いて内容を把握する
• 時間と相談してやれそうなことを考える
• 大きな改造にいつ手をつけるか
• 早目がよい、ほぼワンチャンス
• 終了時間に動いてなければならない
![Page 32: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/32.jpg)
順番で言うと1.初期状態の保存
(コードや各種設定のバージョン管理、初期データ保存)
2.実際にブラウザから触ってみる、レギュレーションを読み込む
3.ベンチマークツールを動かしてみる
(アクセスログの確認、データ量の確認)
4.コードを読んで内容を把握 (ここまで手分けしても約1時間)
5.改善内容の検討、時間と相談して方針決定
6.実際に改善にとりかかる
![Page 33: ISUCON夏期講習2015_1 概要編](https://reader031.vdocuments.net/reader031/viewer/2022021922/5871ae011a28abda6a8b60ad/html5/thumbnails/33.jpg)
Enjoy ISUCON!