ISUCON公式Blog

WINNER'S PRIZE \1,000,000



   

最終更新 2013/10/18 7:31 参加者エントリ64件

--
LINE株式会社の櫛井です。

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

予選のTweetはこちらでまとめています
#isucon オンライン予選 Tweet まとめ - Togetter


運営
オンライン予選 一日目の結果発表 : ISUCON公式Blog
オンライン予選 二日目の結果 & 暫定版の本選出場チーム発表 : ISUCON公式Blog
#isucon 2013年予選問題の解説など : ISUCON公式Blog
ISUCON3 予選を開催しました - 酒日記 はてな支店
#isucon の予選問題の出題に参加しました - beatsync.net

参加者
DSAS開発者の部屋:ISUCON 3 予選参戦記
ISUCON3 予選の記録 - Webtech Walker
#ISUCON 2013に参加しました - handlename's blog
isucon3 の予選に参加しました #isucon - @soh335 memo
ISUCON予選にPHP実装で参加して3位になりましたーやったことなどまとめ
#isucon 3 予選まとめ - diary.sorah
#isucon 2013予選に参加した - すぎゃーんメモ
ISUCON3予選に参加してきました。 #isucon - from scratch
isucon3 予選に参加して惨敗してきた話 - do_akiの徒然想記
isucon #3 予選に参加してきた - I sort my thought...
おいぬま日報: #isucon の予選に出場して惨敗してきた( ー`дー´)キリッ
YappoLogs: ISUCON3 で暫定で本戦進出らしいです #isucon
ISUCON3予選でチーム└('-'└)として参加した&やったこと - Dマイナー志向
#isucon 予選でとりあえず10位だった - ぱいぱいにっき
#isucon 予選で息も絶え絶えです - wtatsuru's blog
#isucon 2013に参加してきた>< - 僕の車輪の再発明
#isucon の予選に参加してきた。 - パルカワ2
#isucon 3 予選総合3位でした | へぼい日記
isucon 2013 予選(一日目)参加記 - nise_nabeの日記
#isucon 2013 予選をトップ通過してきた(はず)。 - 双六工場日誌
Life with open mind: ISUCON3 に参加して予選敗退したので反省してみる
好きな子のことかslow query logのことばかり考えてほかのことがおろそかになる性格なおしたい #isucon - かみぽわーる
ISUCON3予選の記録 - ni-blog
isuconに初参加してきました - tanihiro.log
#isucon 2013 予選1日目に参加しました - さよならインターネット
isucon3予選参戦の記録 - tagomorisのメモ置き場
ISUCON3の予選を通過した(はず) - @ijin
ISUCON3 予選に参加しました | metropolis
ISUCON3 予選に参加してきました。無念ばかり残る - Hateburo: kazeburo hatenablog
ISUCON予選に出た #isucon - tknzk's tech log
日々の覚書: Isucon #3に出場してチームをお通夜にしてしまった話
ISUCON3予選に学生枠で参加してみた #isucon - 404 Engineer Logs
ほげほげ: ISUCONで予選敗退してきました
isucon 2013にて戦死 | Ore no homepage
100万円が欲しくてisucon2013予選に参加したけど惨敗した話 #isucon - damelog
ISUCON 2013 にチーム「 50ms or die. 」として参加してきました - 0.01mmの向こうへ
ISUCON3 予選に参加してきた - kanblr
魔王軍としてisucon3予選学生領を制圧してきた - あざらし備忘録。
#isucon 予選、暫定で生き残れたよう。 - kfly8の日記
魔王軍としてisucon3予選学生領を制圧してきた - あざらし備忘録。
#ISUCON で見事名誉返上、汚名挽回しました! - iをgに変えるとorangeになることに気づいたoranieの日記
#isucon 2013 に参加しました。あるいは最低スコア 900 を叩きだした僕達の足跡 - ALBERT Engineering (仮)
ISUCON3 予選参加報告 - myfinderのはてなブログ
ISUCON3 に参加しました - Islands in the byte stream
ISUCON3の予選に参加してきた - Shogo's Blog
sonots:blog : #isucon 2013なんとか予選突破しました(はず)。そして Miami へ ...
isucon予選に 「くらげとみかんと江戸幕府」チームで参加してきました - bokko bokkoにしてやんよ
ISUCON#3の予選に参加してきた - 酒飲みの備忘録
ISUCON3のオンライン予選にFulabで参加してきました | Fusic Developers' Weblog
ISUCON3 予選 2 日目に参加した(暫定 5 位) #isucon - 詩と創作・思索のひろば (poetry, writing & deep thoughts)
ISUCON3予選で何も出来なかった話 #isucon - ikosin's diary
isucon3 予選で敗退しました(うさぎ工房) | シーズクリエイターズブログ
#isucon 3予選を運良く通過したはなし - かるぱねるらすたいる
ISUCON 3 予選回顧録 - その手の平は尻もつかめるさ
ISUCON 2013 予選に参加してきました。 - あおみかんのブログ
ISUCON 3 予選に参加してきた | 暇人じゃない
#isucon参加記録 またはへっぽこ学生エンジニアは如何にしてRedisを愛するようになったか。そしてエモい話。 - cnosuke's blog (′ʘ⌄ʘ‵)
#isucon3予選で惨敗してきた - @Inject
第三回ISUCONの予選に出たけどダメだった | 明日から本気出す
#isucon 2013 予選通過 - @kyanny's blog
ISUCON#3予選に参加しました | κeenのHappy Hacκing Blog
isuconオンライン予選にチームMiamiで参戦しました! - CubicLouve
isucon3-qual-go/gocon.md at master · methane/isucon3-qual-go
#isucon 予選でdstatを叩くだけの簡単なお仕事をしてきました - masasuzu 技術メモ
Read more...

みなさんISUCON予選おつかれさまでした。@fujiwaraとともに今回の予選の運営をしている@acidlemonです。予選問題はまず最初に@fujiwaraがPerlの初期実装を作って私が解き、おもったよりもサクサクだったので凶悪なクエリを追加して大体完成したところで、@fujiwaraがRuby, Python, Goの移植、私がNode.js、PHPの移植を行いました。

Node.js実装についてはsupervisordではなくstandaloneで動かすとtmpfile()が $HOME/tmp にテンポラリファイル作ろうとするため、コンソールから直接npm start等で起動した場合はそのようなフォルダがなくエラーとなる問題が1日目のAMIにありました。この点でハマってしまった方、申し訳ありません。

さて、講評につきましては明日以降みなさまより提出いただいたAMIを私と@fujiwaraでチェックし、順位が確定したタイミングで@fujiwaraから出る予定となっております。それに先立ち、まず私からはどのような問題だったのかの解説をしたいと思います。

予選問題の解説


今回のWebアプリは一言でいうとgithubのgistのようなWebアプリでした。大体以下の要件のWebアプリとなっています。

  • ログイン機能がある。CSRF対策がなされている
  • メモ(Markdown形式)を投稿する機能がある。投稿するときにメモを非公開にするかどうか選ぶことができる
  • トップページに最新の公開投稿100件を表示する
  • 公開投稿をページングして辿っていく機能があり、各ページ100ページずつ表示する
  • マイページに自分が投稿したメモを公開/非公開に関係なくすべてリスト表示する
  • メモの表示はMarkdownをHTMLに変換して行う。メモページからは次/前の公開メモを辿ることができる

  • また、競技を行うマシンはAWSのEC2に以下のようなAMIを準備しました。

  • OSは最新のAmazon Linux(x86-64)
  • TCP/80ポートをApache 2.4で待ち受け、すべてのアクセスをTCP/5000ポートへリバースプロキシする
  • TCP/5000は初期設定ではperl実装が起動している。起動する実装はphp以外supervisordで切り替え可能
  • PHPを使用する場合はサンプル提供しているApache用のconfファイルを有効にしてTCP/5000でPHPを動かす
  • ストレージは最新のMySQLとAmazon Linux標準のmemcachedをインストール
  • アプリの設定はPerl, Ruby, PythonのPrefork型アプリケーションサーバは10worker、Goはコントローラ部分が10並列、Nodeはclusterを使い2プロセス、PHPはApacheのデフォルト設定
  • アプリはセッションストアとしてmemcachedのようなものを使用

    各言語の初期スコアですが、大体 Go 2500 > Ruby 2000 > Python = Perl > Node.js = PHP といった感じになっています。初期のボトルネックはほぼDBとなっていましたのでアプリで処理を行う部分のスコアはほとんど同じ感じでしたが、Goが飛び抜けているのは静的ファイルを返す速度ですこし飛び抜けた感じになっています。最終スコアからすると誤差の範囲ですね。

    具体的に高速化していく解答方法については明日以降に別途エントリの場所を #isucon タグでお知らせしますが、まずは「あれは罠なの?」などと質問が飛びそうな点などについて以下で解説していきます。

    出題内容について


    Q. セッションストアにmemcachedのようなものを使っているのは罠ですか?
    A. まずどのぐらいの方が気付いたかわかりませんが、memcachedのデフォルトポートである11211ポートで起動していたのは純正のmemcachedではなくMySQL 5.6.14のInnoDB Memcached Pluginです。純正のmemcachedは11212ポートで起動していますので、セッションストアの接続先を11212ポートに変更するとMySQLの負荷が少しだけ下がったのではないかと思います。ただし、アプリが出すクエリのほうがよっぽど重かったと思います。

    また、memcachedではなくファイルに保存するという変更も可能かとおもいます。今回は1台のEC2の上にすべて乗っていますので、memcachedとファイルで差異はあまりでなかったのではないかと思います。

    Q. HTMLにCSSで / を指定したものがありましたが罠ですか?
    A. あれは多分罠ですね。@fujiwaraが「あるあるネタ」として仕込んでいました

    Q. 静的ファイルを返す部分にディレイを入れたらスコアが下がりましたが罠ですか?
    A. チェッカーも静的ファイルを取りにいきますのでディレイを入れたらチェッカーが遅くなるのでスコアが下がるでしょうね。

    Q. gzipをONにするとスコアが下がりましたが罠ですか?
    A. ベンチマークツールとアプリが同じマシンにありますので、ベンチマークツールでgzipを展開してmd5を確認しますのでそのぶんベンチマークツールのスループットは下がるのではないかと思います。

    Q. サインインしたときにDBのlast_accessカラムを更新していましたが、使っているところが見当たりません
    A. HTMLに書き出しているところはありませんので、気付いた人は削除してスコアアップできるサービスポイントです。

    Q. PHPで初期でFAILが出ます
    A. PHPは初期状態で負荷が高すぎてFAILがでてしまいます。これはセッションストアのmemcachedに接続する際に高負荷でタイムアウトとなっていることから発生しているのですが、現在のMemcachedモジュールにはセッションストアに接続する際のタイムアウトを設定できないため、やむをえずこのようになっています。なお、Memcachedモジュールのgithubにはタイムアウトを指定できるものが上がっているのですが、まだ正式リリースされてないため採用できませんでした。

    Q. Perlで謎の空 < h1> がありましたが罠ですか?
    A. Kossyにはもともと$greetingとか$site_nameという変数に文字列を入れる機能が入っていたのですが、それを潰したときに< h1>タグを削除するのを忘れていたようです。罠ではありません。

    ベンチマークツールについて


    Q.なんの言語で作ったんですか? 中身を解析しようとおもったけどバイナリでした
    A. @fujiwaraがGoで実装してネイティブバイナリにコンパイルしています。

    Q. --workloadオプションにより上がる並列数はどのぐらいですか?
    A. (N+1) * (N+1) * 2で並列数を設定していますので、1で8並列、2で18並列、3で32並列、4で50並列、5で72並列、6で98並列…と上がっていきます。あまり並列数を上げても限界がありますので、私の感覚だとworkload=2か3でちょうどいいくらい、環境によっては4でいいスコアがでるかもしれないというところでした。

    基本的にコンテンツを返すのにかかる時間が短くなればなるほど低めのworkloadのほうがよりよくベンチマークが回るといった印象です。

    Q. もしかして○○を○○するチートができませんか?
    A. いくつかチェックが甘い点が見つかっております! それにつきましては解答編でおしらせする予定です…


    その他にもなにかご質問などありましたらTwitterに #isucon タグを付けてつぶやいていただけると解答できるかもしれません。

    参加いただいたみなさん、ありがとうございました! 正式な最終結果は木曜日に発表予定となっておりますので、もうしばらくお待ちください。
    Read more...

    櫛井です。

    昨日今日と開催いたしました ISUCON オンライン予選、ご参加いただいた皆さんありがとうございました!そしてお疲れ様でした。参加総数74チーム、計210名の方々にご参加いただいたオンライン予選の結果を発表いたします。

    本選への出場枠についておさらいです。11月9日にLINE株式会社 渋谷ヒカリエオフィスにて開催される本選出場へ参加する条件は以下となっています。
    ・オンライン予選 TOP20チーム
    ・オンライン予選 学生枠 TOP3チーム
    ・共催枠 2チーム(LINE選抜チーム、カヤック選抜チーム)

    の合計25チームを予定

    では、本日の二日目の結果をふまえたオンライン予選の総合結果をお知らせします。

    ・オンライン予選 日別上位チーム
    一日目上位5チーム
     1位 : 勝浦タンタンメン
     2位 : ぜかまし
     3位 : 山形組
     4位 : The Revenge of Mr. Frank & Co.
     5位 : くらげとみかんと江戸幕府

    二日目上位5チーム
     1位 : 進撃の超大型パティスリー兄弟
     2位 : オシャレ怪盗スワロウテイル
     3位 : チームたこやき
     4位 : チームぽわわ2
     5位 : Third Party Cookies

    ・オンライン予選 学生枠 TOP3チーム
     1位 : 魔王
     2位 : ( (0) / (0)) ☆祝☆
     3位 : 休学って楽しいよね! (まてぃー「僕はちがいます!」)

    上記チームを除いた総合スコア上位10チーム
     1位 : 潰すつもりで来てください
     2位 : 坂パスタ
     3位 : 白金動物園
     4位 : 50ms or die.
     5位 : └('-'└)
     6位 : :ok_woman:
     7位 : Noder
     8位 : 335
     9位 : 緊急ファイナル
     10位 : Miami


    上記23チームと、共催枠の2チームをあわせて25チームが本選へ選出となります。

    ※レギュレーションにおいて以下を定めていますので上記内容ではない結果で本戦出場が確定する場合があります
    ただし、競技終了後に参加者から提出された AMI を元に主催者が実行した環境において、競技時間中に計測された性能値に近い値が再現できないチームは失格とすることがある。



    最終的な本選出場チームの発表は 10月10日(木)を予定しており、発表は当ブログにて行います。


    また、公式ハッシュタグ #isucon にて点数の途中経過をお知らせしていましたが、オンライン予選の総合ランキングを選抜・学生枠を含めて点数付きでTOP10を参考までに掲載いたします。

    1位 33830.4 勝浦タンタンメン
    2位 32486.8 ぜかまし
    3位 32270.7 山形組
    4位 30090.3 進撃の超大型パティスリー兄弟
    5位 29263.2 オシャレ怪盗スワロウテイル
    6位 20599.5 The Revenge of Mr. Frank & Co.
    7位 19412.5 くらげとみかんと江戸幕府
    8位 15682.2 LINE選抜「チーム生ハム原木」
    9位 14379.0 チームたこやき
    10位 13192.1 チームぽわわ2


    以上となります。予選参加者の皆さんには別途アンケートをお送りしますが、まずはお疲れさまでした!本選出場の確定は4日後を予定しておりますが、その間にでも是非ブログなどで ISUCONオンライン予選に参加した感想など書いていただければと思います。


    今後ですが
    ・問題内容の構成とポイント
    ・具体的な高速化方法
    ・オンライン予選 講評
    などを当ブログにて掲載予定です。


    予選の様子はこちらでまとめています
    #isucon オンライン予選 まとめ - Togetter
    Read more...

    ↑このページのトップヘ