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