Upload
satoshi-tagomori
View
11.797
Download
0
Embed Size (px)
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!