狠狠撸

狠狠撸Share a Scribd company logo
俺なりのISUCONとかの
戦い方
2015-10-04
福井技術者の集い #4
りちゃ / @rch850
りちゃ / @rch850?
鯖江のエンジニア?
OS設定以上?
フロントエンド実装以下?
ふくもく会とかやってます
高専、専攻科の時
高専ロボコンとか?
高専プロコンとか?
ACM/ICPCとか
大学院の時
国際VRコンテスト?
CGレンダリング
KOF懇親会は 11/6(金)
高専カンファレンスは 11/7(土)
オープンソース、コミュニティ活動等のテーマで発表募集
詳しくは http://kosenconf.jp/?097kof2015
http://isucon.net/
Iikanjini Secure ni surU
Contest
ではありません
Injection de Score wo Update
Contest
でもありません
http://isucon.net/
今回で5回目の開催
263チームが出場
オンライン予選 → 本戦 @ ヒカリエ
予選概要
Google Compute Engine を使う
アクセス数やエラー数などで算出され
るベンチマークスコアを競う
お題は複数言語から選択可能
予選突破条件
最初に3,000点を超えたチーム
上記を除く各日上位4チーム
上記を除く両日合計上位10チーム
上記を除く学生5チーム
3,000点を最初に超えた
チームへしこずの戦い方
9月26日(土)
オンライン予選一日目
会場:福井県産業情報センター
協力:ふくもく会
チーム名:へしこず
メンバー:rch850, macoshita,
emittam
俺なりの滨厂鲍颁翱狈とかの戦い方
开始0分
「始まってるの?」
「始まってるっぽい」
「あ、一昨日連絡メールきてたわ」
「おえー」
開始5分
ポータルサイトを開き、
様子を見る
「俺インスタンス立てるから、その間
ルール読んどいて」
「「おk」」
「人数分立てるから好き勝手遊んで」
問題のOS、アプリケーションが、イ
メージファイルとして提供される
これを Google Compute Engine で
読み込んで起動する。
インスタンスのスペックは指定されて
いる(当然)
nginx
unicorn
Ruby
sinatra, mysql2-cs-bind
MySQL 5.6
「進?ゼミでやったところだ!」
nginx
ユーザからのアクセスを最前線で受け
付けるサーバ
ここで HTML ファイルとかを提供した
り、裏のアプリケーションサーバに渡
したりする
同類:apache, IIS
unicorn
Ruby のアプリケーションを動かせる
サーバ
HTTP 接続を受け付けて、Ruby プロ
セスに投げる
同類:tomcat
Ruby
プログラミング言語
sinatra でウェブアプリケーション
mysql2-cs-bind で MySQL 接続
MySQL
データベースサーバ
バージョンは 5.6
……特に言うことないです
nginx
worker
process
worker
process
unicorn
開始45分
役割分担を決める
?ベンチマークのボトルネック調査
?Rubyのコード見て最適化
?nginx, unicorn の最適化
ベンチマークのボトルネック
nginx で request_time をログに出し
て、遅いリクエストを調べる
処理時間が秒単位なのはほぼ GET /
とにかく GET / をなんとかしよう!
https://github.com/isucon/isucon5-qualify/blob/master/webapp/ruby/app.rb#L164
Rubyのコード見て最適化
ざっとクエリ見てインデックス張る
段階ごとの処理時間をログに出す
ruby のコードをクエリに書き換える
「?ソコードを潰す作業」
平常時
「ク?コードだ!?ソっ!」
ISUCON
「ク?コードだ!やったぜ!」
db.query('SELECT * FROM entries ORDER BY
created_at DESC LIMIT 1000').each do |entry|!
next unless is_friend?(entry[:user_id])!
entry[:title] = entry[:body].split(/n/).first!
entries_of_friends << entry!
break if entries_of_friends.size >= 10!
end
とりあえず最新1000件
引っ張ってきて
友達の投稿以外は除去
10件に達したら終わり
これ SQL で書けるやつだ
友達の投稿を取り出すコード
nginx, unicorn の最適化
unicorn の worker_processes を増
やす (20程度)
nginx の worker_processes を増や
す (4)
开始2时间半顷
「ベンチ取るか」
「おー、3000」
「……あれ、3000でトップ!?」
「何度リロードしてもトップだ」
「やったー」
頼んでいた昼食の買い出しがちょうど
帰ってきたので一旦休憩
↑このあたりが、協力:ふくもく会
その后、试合终了まで
MySQL
メモリを使うようにする
(innodb_bu?er_pool_size,
innodb_sort_bu?er_size)
遅いクエリを探すために slow log を
mysqldumpslow にかける
「サブクエリなんとかならんかなー」
アプリケーション側
erb 内のクエリを最適化
数だけあればいいのに SELECT * して
るのを COUNT に
友達関係は常に両思いだから片方だけ
チェック
予選結果
最終スコア 12,616点?
トップは 27,232点
3,000点に最も早く到達したチーム枠
で本戦出場
月末の本戦が本番!
俺たちの戦いはこれからだ!
おまけ
ISUCON「とか」の戦い方
「とか」とは
ICPC 2004 アジア地区予選愛媛大会
読む、解く、打ち込むの3人体制
4問解いて7位
役割分担
あくまで初期の役割分担
時間が経つと役割が交わり、最適化され
ていく
短期決戦は本当に時間が無い
役割分担大事!

More Related Content

More from rch850 - (19)

PDF
落ちないサーヒ?スを础奥厂て?
rch850 -
?
PDF
User 3486
rch850 -
?
PDF
Traditional server 3477
rch850 -
?
PDF
Storage & content delivery amazon s3 4738
rch850 -
?
PDF
Lambda 4153
rch850 -
?
PDF
Generic database 3464
rch850 -
?
PDF
Elastic load balancing 3575
rch850 -
?
PDF
Database dynamo db-4734
rch850 -
?
PDF
Database amazon rds 4731
rch850 -
?
PDF
Client 5088
rch850 -
?
PDF
Amazon rds 3605
rch850 -
?
PDF
Amazon ec2 instances 3621
rch850 -
?
PDF
Aws cloud 3654
rch850 -
?
PDF
ものつ?くりのための贵础颁贰モテ?ル
rch850 -
?
PDF
capify all
rch850 -
?
KEY
半文半理の大学院から来ました
rch850 -
?
KEY
Applied linear algebra
rch850 -
?
PPTX
なにが?どうなる?奥别产骋尝
rch850 -
?
PPT
Box2D 今昔物語
rch850 -
?
落ちないサーヒ?スを础奥厂て?
rch850 -
?
User 3486
rch850 -
?
Traditional server 3477
rch850 -
?
Storage & content delivery amazon s3 4738
rch850 -
?
Lambda 4153
rch850 -
?
Generic database 3464
rch850 -
?
Elastic load balancing 3575
rch850 -
?
Database dynamo db-4734
rch850 -
?
Database amazon rds 4731
rch850 -
?
Client 5088
rch850 -
?
Amazon rds 3605
rch850 -
?
Amazon ec2 instances 3621
rch850 -
?
Aws cloud 3654
rch850 -
?
ものつ?くりのための贵础颁贰モテ?ル
rch850 -
?
capify all
rch850 -
?
半文半理の大学院から来ました
rch850 -
?
Applied linear algebra
rch850 -
?
なにが?どうなる?奥别产骋尝
rch850 -
?
Box2D 今昔物語
rch850 -
?

Recently uploaded (9)

PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
色について.pptx .
iPride Co., Ltd.
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Ad

俺なりの滨厂鲍颁翱狈とかの戦い方