ISUCON夏期講習2015_1 概要編

Preview:

Citation preview

ISUCONの話 概要編

2015/08/19 ISUCON夏期講習

Treasure Data, Inc. 田籠聡(tagomoris)

www.slideshare.net/tagomoris

Satoshi "Moris" Tagomori (@tagomoris)

Fluentd, Norikra, MessagePack-Ruby,... Docker logging driver for Fluentd (docker v1.8)

Treasure Data, Inc.

で、誰?

• ISUCON1 (2011): 出題

• ISUCON2 (2012): 出題

• ISUCON3 (2013): 優勝

• ISUCON4 (2014): 優勝

• ISUCON5 (2015): 出題

Qualify: Sep 26,27 (online) Final: Oct 31 (Hikarie)

ISUCONとは• Webアプリケーション高速化コンテスト

• 1: blog

• 2: チケット販売サイト

• 3予選: wiki的サイト, 3決勝: 画像SNS

• 4予選: 不正ログイン検出, 4決勝: 動画広告配信

• ベンチマークで最高スコアを出せば勝利

user4

user3

user2

user1

※イメージ

serverserver

server

serverserver

server

serverserver

serverserverserver

server

bench

高負荷アクセス 動作チェック

ぼくらのお仕事について• Webサービス/インターネットサービスの提供

• サーバサイドの環境構築・プログラミング

• ネットワーク, サーバ, OS

• Webサーバ,RDBMS, KVS 等のミドルウェア

• SQL, プログラムコード

• 要するにISUCONの作業対象ほとんど

普段の仕事

• ネットワーク・サーバ・OS・ミドルウェア

• 環境の選定、セットアップ

• モニタリング、トラブル対応

• そのためのツール作り、自動化

• データセンタ設計、広域ネットワーク、セキュリティ、などなど

ISUCON参加者の人々• インターネットサービス関連の人が多いが、様々

• 会社の同僚同士のチームが多い

• ほか、勉強会などでの知り合いなど

• スキル的にはいろいろ

• ITインフラ専門の人ばかりのチーム

• ITインフラ + アプリな人のチーム

Webサービスにおけるパフォーマンス

• 「パフォーマンス」とは

• レスポンスタイム:

• 1リクエスト → 1レスポンス の時間

• スループット:

• 1秒間に返せるレスポンスの数

• 短いレスポンスタイム、高いスループット

• == 「良いパフォーマンス」

パフォーマンス向上の重要性

• ユーザ体験の向上

• ユーザのアクションにすぐに反応する

• 入力内容が遅れず反映される

• 運用コストの低減

• 必要なサーバ台数の減少

• 高負荷サーバ減少→メンテナンス手間の削減

ISUCONにおける パフォーマンス

is スコア

スコア向上のためなら (レギュレーションの許す範囲内で)

何をやってもOK!

スコア向上のためなら (レギュレーションの許す範囲内で)

何をやってもOK!

レギュレーション

• よく読もう

• ISUCON4 予選レギュレーション

• http://isucon.net/archives/39979344.html

• ISUCON4 決勝レギュレーション

• https://gist.github.com/mirakui/4a935053c272469ed349

Web Applicationとは

benchmark tools

server

web server

application server

database server

benchmark tools

serverweb server

serverapplication

server serverapplication

server

serverdatabase server

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

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

Database Server

• MySQL, PostgreSQL, Oracle DB, MS SQLServer, ... (MongoDB, Cassandra, Redis, ...)

• storing data

• search/respond data serverweb server

serverapplication

serverapplication

server

serverdatabase server

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

ISUCONで何をやるか

教訓ぽいもの• やったことがないことはできない

• 普段どおりやる

• 普段やれないことをやる

• 何をやるべきか最初によく見る

• 何をやったかをちゃんと把握する

• いつでも戻れるようにしておく

安全のために• 最初の状態を保存しておく

• ソースコード、初期データ、初期設定

• 初期スコア(出しておく!)と初期状態

• 何をやったか記録しておく

• ソースコードや設定のバージョン管理

• 相談内容の記録

ボトルネックを見付けて 解決する

• HTTPD? connections? cpu? memory?

• Application? connections? cpu? memory?

• RDBMS? read? write?

• Network? data size? latency?

• ボトルネックは解決するたびに移っていく

スコア• スコアを向上させる

• スコア算出ルールを見る

• 何を改善すべきかを考える

• スコアの揺れ

• 実行時の状況によって多少の揺れが出る

• わずかな差異(誤差)にまどわされない

• 改善は劇的に行う(×1.2倍 ○5倍!)

制限時間• 時間があります

• 7時間で何もかもやるのは不可能

• 最初に落ち着いて内容を把握する

• 時間と相談してやれそうなことを考える

• 大きな改造にいつ手をつけるか

• 早目がよい、ほぼワンチャンス

• 終了時間に動いてなければならない

順番で言うと1.初期状態の保存

(コードや各種設定のバージョン管理、初期データ保存)

2.実際にブラウザから触ってみる、レギュレーションを読み込む

3.ベンチマークツールを動かしてみる

(アクセスログの確認、データ量の確認)

4.コードを読んで内容を把握 (ここまで手分けしても約1時間)

5.改善内容の検討、時間と相談して方針決定

6.実際に改善にとりかかる

Enjoy ISUCON!