ISUCON公式Blog

ISUCONとはさくらインターネット株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです

ISUCONの過去問に
チャレンジするための
シンプルな環境構築
商標「ISUCON」利用の
ガイドラインはこちら

第三回 ISUCON本選 関連エントリまとめ

2013.11.19 13:42 更新 参加者エントリ37件
--
LINE株式会社の櫛井です。

ISUCON本選にご参加いただいた皆さん、ありがとうございました!
こちらでは感想エントリや何をしたかに言及されたエントリをまとめていきます。見つけた順です。もしここに載っていないものがある場合は @941 まで教えていただけると助かります。

本選のTweetはこちらでまとめています
第三回 #isucon 本選Tweetまとめ - Togetter

メディア掲載
・サーバーとアプリを高速化、さばけるアクセス数を競う「ISUCON 3」レポート -INTERNET Watch

運営
・#isucon の本戦問題の解説に書くネタのメモと、とっかかりの見つけ方 - beatsync.net
・ISUCON3 を開催しました - 酒日記 はてな支店
・ISUCON3出題の裏側 | tech.kayac.com - KAYAC engineers' blog
Read more...

第三回 #isucon 本選リアルタイムフォトレポート【更新終了】

2013.11.9 23:22 追記
--
こんにちは、櫛井です。

お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それがISUCONです。過去の実績も所属している会社も全く関係ない、結果が全てのガチンコバトルです。第三回 #isucon のフォトレポートをお届けいたします。

関連エントリ
▼優勝賞金ドドンと100万円! 第三回 ISUCON 開催のお知らせ #isucon : ISUCON公式Blog
▼ISUCON 本戦出場者決定のお知らせ : ISUCON公式Blog
▼第三回 ISUCON本選 関連エントリまとめ : ISUCON公式Blog

会場は渋谷ヒカリエのLINE株式会社オフィスです
DSC06928
DSC06929


開始の30分前にはほぼ参加者が揃う相変わらずの集まりのよさを発揮
DSC06871


今回はゴロ寝スペースや
DSC06872
Read more...

ざっくりと #isucon 2013年予選問題の解き方教えます

こんにちは、@acidlemon です。

ざっくりと書いたつもりなのに長編です。

本エントリでは、スコアがなかなか伸びなかった方々を主な対象として、実際に先週末実施した予選問題を解いていく方法を解説します。高スコアをたたき出した方々は参考までに「こんなやりかたでもここまでスコア伸びるんだなー」という感じで読んでください。

最初の方針は「派手なことをしない」「コンサバにやる」です。「とりあえず」という気持ちでmemcachedやRedis、もしくはvarnishやnginxでキャッシュし始めるとキャッシュの寿命のことを考え始めなければならず、疑心暗鬼になったりして難易度が上がります。まぁその辺は最終的には男気によって解決するものなのですが、その要素を排除したままできるだけスコアを上げてみましょう。

日曜夜よりアップされたみなさんの感想エントリなども拝見しており、やっぱオンメモリに置くのは速いよなぁなどいろいろな感想をもちました。しかし、もともとリアルISUCONをたくさん経験されている方の中には「それたしかにすごいけど実運用のサービスではちょっとできないよね…」といった感想をお持ちの方もいるかと思います。とりあえずRedisに全部データおいてみるとか、アプリのオンメモリにデータをため込むといったことをせず、堅実にスコアを上げていく方法を以下で解説していきます。

ミドルウェアやアプリのムダ処理排除

openrestyかnginxのインストール

今回はとくにnginxに関する罠がなかったので最初から入れ替えて問題を感じた方はいなかったのではないでしょうか。予選用AMIに最初から入ってるnginxは普通のnginxなのでLuaは使えません。もしLuaが使いたいならopenrestyをダウンロードしてきて自分でインストールするのが楽です。その場合でも設定ファイルはそのまま使えますので、最初は標準のnginxでスコア上げを行い、どうしてもダメならopenrestyに入れ替えてsupervisordに以下のような感じの設定を書き加えればよいですね。

[program:nginx]
directory=/usr/local/openresty/nginx
command=/usr/local/openresty/nginx/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
user=root
redirect_stderr=true
stdout_logfile=/tmp/nginx.log
autostart=true
Read more...

ISUCON3 オンライン予選 講評

出題担当のfujiwaraです。

ISUCON3予選にご参加いただいた皆様、ありがとうございました。 本選進出者の皆様、おめでとうございます!

おかげさまで大きなトラブルもなく、無事に2日間の予選を終えることができました。楽しんでいただけたでしょうか。

出題内容

今回の予選問題は以下のようなWebアプリケーションを題材としました。

  • 要するにGithub Gistのようなもの
  • ログイン機能がある。Cookieによるセッション維持が必要
  • プライベート投稿機能がある。プライベート設定されたものはログインしているユーザにしか見えない
  • Markdown形式で投稿できる
過去のISUCON1,2での題材はユーザごとのログインという機能がなかったため、その点が大きく異なる部分ですね。

詳細については、問題作成に協力してもらった同僚 @acidlemon が解説記事を書いていますのでご参照ください


講評

予選参加者の皆さんから提出された AMI から運営がインスタンスを起動してベンチマークを行い、予選期間中に記録された最高スコアに近い値が計測されたのを確認して本選進出確定、というレギュレーションでしたので、こちらでベンチマークを実行しつつ内部を軽く見せていただきました。それを元に講評したいと思います。

アプローチとしては大きく分けて三つあったようです。

  1. アプリケーションを再実装しオンメモリにデータを保持して高速に処理する実装を作り上げる
  2. フロント(nginx, varnishなど)でキャッシュを積極的に行い性能を出す
  3. アプリケーションを着実に改善していくことで性能を出す
スコアが20,000以上の上位チームの中では、「山形組」「ぜかまし」が1.のアプローチ、それ以外が2.のアプローチのようでした。

1.のアプローチについては、今回の初期データが200MB、数万件程度でメモリに十分保持できるサイズだったこともあり、非常に高速に動作させられるようですね。 アプリケーションの変更点が大きくなるため、時間内に作り上げるのはなかなか困難だと思いますがそれをやりきって速度を出した2チームでした。

2.のアプローチですが、フロントでキャッシュするといっても、今回の設問はログイン中ユーザに配信するページにはそれぞれのユーザ名が書き込まれているなど、キャッシュすることがなかなか難しい作りです。

ただし /recent/* という投稿された一覧画面のみ、非ログイン状態のクライアントが大量にアクセスしてくる作りになっています。(一部、ログインセッションを持ったクライアントもアクセスします)
Read more...

ISUCON 本戦出場者決定のお知らせ

櫛井です。

オンライン予選後、事前に告知していたレギュレーションに則り、参加者から提出された AMI を元に主催者が実行し競技時間中に計測された性能値に近い値が再現できるかを確認いたしました。その結果、本選出場者は以下となります。

本選出場者

以下、順位・予選スコア・チーム名となります。

一般枠
1. 33830 勝浦タンタンメン (予選1日目 1位)
2. 32486 ぜかまし(予選1日目 2位)
3. 32270 山形組(予選1日目 3位)
4. 30090 進撃の超大型パティスリー兄弟(予選2日目 1位)
5. 29263 オシャレ怪盗スワロウテイル(予選2日目 2位)
6. 20599 The Revenge of Mr. Frank & Co.(予選1日目 4位)
7. 19412 くらげとみかんと江戸幕府(予選1日目 5位)
8. 14379 チームたこやき(予選2日目 3位)
9. 13192 チームぽわわ2(予選2日目 4位)
10. 12595 Third Party Cookies(予選2日目 5位)
11. 11249 潰すつもりで来てください
12. 10846 坂パスタ
13. 10813 白金動物園
14. 10787 50ms or die.
15. 10784 └('-'└)
16. 9732 :ok_woman:
17. 9268 Noder
18. 9061 335
19. 8756 Miami
20. 8255 Fulab ※繰り上がり当選


共催枠
LINE選抜「チーム生ハム原木」
カヤック選抜「既婚1人 + その他2人」


学生枠
1. ( (0) / (0)) ☆祝☆
2. かまたまうどん ※繰り上がり当選
3. aky ※繰り上がり当選


以上、25チームとなります。
開催のお知らせでも書きましたが、本選は11月9日(土)に LINE株式会社の渋谷ヒカリエオフィスにて行います。本選参加は当日渋谷ヒカリエにお越しいただける方のみとし、オンラインでの参加は不可とします。また、予選と本選でチームメンバーの交代は出来ませんのでご注意ください。


一般枠から暫定本選出場予定だったチーム「緊急ファイナル」については、[FAIL] invalid Cache-Control header などが大量に発生し、ベンチマークが5回連続でスコア0でfailしたため、残念ながら失格とします。

また、学生枠で暫定本選出場予定だった「魔王」は、OS起動直後にはPerl実装がsupervisordから起動していました。--init内でPerl実装を止めてforemanを起動しているところで正常に起動しなかったようで、ベンチマークが5回連続スコア0でfailしたため残念ながら失格とします。参考までに、foremanを単独で手動起動して計測したところ 16952.5 のスコアが出ました。
Read more...

↑このページのトップヘ