ISUCONの話(夏期講習2014)

Preview:

DESCRIPTION

 

Citation preview

ISUCONの話

2014/08/20ISUCON夏期講習

LINE株式会社田籠聡(tagomoris)

で、誰?

tagomoris

kazeburo

sugyan

LINE社員(t,k,s)

ISUCON出題(t,k)

ISUCON優勝(s)

ISUCON2出題(t,k,s)

ISUCON3優勝(t,k,s)

ISUCON4

予選: 9/27, 28

決勝: 11/8

ISUCONとは

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

1: blog, 2: チケット販売サイト

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

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

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!

レギュレーション

よく読もう

ISUCON3 予選レギュレーション

https://gist.github.com/acidlemon/2c7d4e2e5b4e24007e39

ISUCON3 決勝レギュレーション

https://gist.github.com/acidlemon/049fe8c9a790a52814fc

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, etcServing static contents

html, js/css, jpg/png, ...Reverse proxy for dynamic contents

session controlload balancingauthenticationcaching

serverweb server

serverapplication

serverapplication

server

serverdatabase server

Application Server

Server process executes application codehtml, HTTP API endpoint

generating viewscalling SQLcalling external apireferring 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.コードを読んで内容を把握

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

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

Enjoy ISUCON!

Recommended