ISUCON公式Blog

WINNER'S PRIZE \1,000,000



   

ISUCON7 オンライン予選の参加登録を開始&参加チームとメンバーリストにてお知らせしていました課題アプリケーションの実装について、お手伝いいただける方を募集いたします。オンライン予選の開催まで残り時間が少ないですが是非ご協力ください。

PHP,Go,Pythonは出題側で用意する予定ですが、Ruby,Perl,Node.jsについてお手伝いいただける方はご協力ください。応募がない場合は残念ながら予選・本選における参考実装が提供されない可能性がありますので是非宜しくお願いいたします。

お手伝いいただく場合はISUCON7には参加できませんのでご了承ください。謝礼などは出ない予定ですが、ISUCON7の出題チームとして予選・本選にご参加いただけます。問題の修正なども発生する可能性がありますので予選・本選の前後の期間は忙しくなる可能性が高いです。

すでにISUCON7に応募済みの方で、参加辞退したうえでお手伝いいただける場合はご連絡ください。こちらで参加チームのメンバー変更など行ないます。

応募はこちらから
ISUCON7 課題アプリケーション実装お手伝い申し込みフォーム

応募締切は 10月9日(月) まで。お手伝いいただくか否かは締切後すぐにご連絡いたします。宜しくお願いします!

Read more...

こんにちは、ISUCON7で出題者チームになった @methane こと KLab の稲田です。

そろそろ皆さん準備を始められていますか?
歴代の猛者の方の中には「普段やってることを普段通りにやるチームが強い」と言う人もいますが、普段通りにするだけで試合を有意義に戦えるチームはごく一握りです。
ISUCONの試合中の緊張感は、本物の障害対応と似ています。違うのは、楽しさと苦しさのバランスと、事前に決まった終了時間があることだけです。

そんな緊張の中で競技を楽しむには、練習をしていたほうが圧倒的に有利です。
初代ISUCONの出題者であり、何度も優勝されてる tagomoris さんいわく、ISUCON参加前と参加後に最も多くのものを持ち帰った人こそが勝者です。勝者となるためにも、事前に練習して、競技時間を有意義に楽しみましょう。

さて、「何を」練習すればいいかについては、ISUCON 夏期講習 2017 を開催しました(当日の資料あり)にある @fujiwara さんの資料がとても参考になるので読んでおいてください。

私からは「どうやって」練習すればいいかのオススメを紹介しておきます。
一番してほしいのは、なるべくチームでのリハーサル形式の練習です。まとまって1試合分の時間が取れない場合でも、試合開始後2~3時間程度の流れだけでもしておいた方が良いと思います。

具体的には、 @fujiwara さんの資料にもある次のようなことを、ちゃんと手を動かして練習し、手順書やメモを残すなどして当日にググらなくても良いようにしておくことで、試合中により多くの時間をチューニングに集中することができるはずです。

  • ssh の設定
  • 例えばメンバーの公開鍵を登録して公開鍵認証にするなら、設定して sshd を再起動した後に、そのログインセッションを維持したまま、他の端末から ssh できることを絶対に確認しておきましょう。ここでミスってログインできなくなると、試合開始後3分でISUCONが終わってしまいます。

  • バックアップとリカバリ
  • 設定ファイル、データベース、その他の必要なファイルを確認し、自分のPCかクラウドに転送しておく。ファイルをバックアップしたつもりが、シンボリックリンクだけが入ってたなんてことがないように、中身も確認しておく。クラウドサービスを使う場合は、外部から見えないことを確認しておく。(公開されているのを見つけたら失格です。)また、本番では必要にならないかもしれませんが、リカバリも練習しておきましょう。バックアップができていることの確認にもなりますし、もし本当に必要になったときは確実にテンパっているからです。

  • systemctl 等の管理コマンド
  • どんなプロセスが動いているかを確認し、不要だとわかったデーモンを止めたり、ログの読み方 (
    /var/log/
    以下にログが書かれるのか、
    journalctl
    を使うのかなど) を確認しましょう。

  • モニタリングツール
  • 使い慣れたものがない場合は、資料にある netdata が良いと思います。インストールと、その見かたを把握しておきましょう。

  • プロファイリングツール
  • alp などのアクセスログを集計して重いリクエストを見つけましょう。 pt-query-digest などのツールを使って重いクエリを見つけましょう。その他、使用するかもしれない、アプリやプログラミング言語ごとのツールの使い方、結果の読み方を、手と目と頭を使って確認しておきましょう。

    それ以外にも、初期は確認・調査するべき事がたくさんあるので、誰が何をするのかの役割分担と、その手順を確認しておきましょう。アクセスログの集計ツールなどを普段使っていない場合は、ちゃんとインストールしてから動かすまでを実際にしてみましょう。より長い時間をチューニングに使うことができますよ。リハーサル形式の練習の題材としては、去年のISUCONの予選か、pixiv さんの社内ISUCONを利用すると良いと思います。

    古いISUCONの問題は、特に変化が激しい言語だと動かすことすらままならないかもしれません。また、本戦の問題は、毎年何かしらクセのある問題なので、あまり事前練習には向かないと思います。上記の2問については、まだ1年しか経っていませんし、重いクエリを見つけて解決するといった定番のチューニングの練習ができると思います。 ただし、pixiv private isucon はディストリビューションとして Debian を利用していますが、予選ではUbuntuを利用する予定なので、練習するときはディストリビューションによる違いに気をつけてください。

    さらにチューニングの練習をしたい場合は、まず自力でできるところまでチューニングしてみて、その後解説・攻略記事を探してそれに習って高得点を出してみましょう。 pixiv 社内 ISUCON については私が書いた攻略記 もあるので参考にしてください。

    攻略記事を参考にするときは、単に同じことを実装してみるだけでなく、どうすればそのチューニングをすればいいことにノーヒントで気づけたかを考えましょう。チューニングをする前に、自分のサーバーでモニタリングソフトを動かしてダッシュボードを見たり、プロファイルを解析したり、 netstat (今時なら ss 等) してみたりして、「よし、本番では自力でこれに気づくぞ!」と思えるようになりましょう。知識不足を痛感したときは勉強のチャンスです。

    さらに余力がある人は、過去の猛者たちの攻略記を、「どうすれば自分もこのように戦えるだろうか」と考えながら読んでみると、いろいろなヒントや練習すべきポイントが見つけられるかもしれません。
    Read more...

    学生限定イベント「ISUCON 夏期講習 2017」を開催いたしましたのでスライドなど共有します。

    当日は、優勝・優勝・出題・3位・優勝・準優勝というISUCON戦歴をもつ最強講師、面白法人カヤックのfujiwaraさんお越しいただきました。



    ISUCON = Iikanjini Speed Up CONtest だと知って驚く方が毎年一定数いらっしゃいます。
    IMG_8380


    当日は講義編と実践編の二部構成で「わかる!ISUCON!」と言い切りたいレベルで大変よくわかる資料をご用意いただきました。資料はこちらで公開されています。
    講義編




    後半では実際にどのようにスコアをあげていくのか、コードを見ながら説明いただき各自トライしてみるという形となりました。
    IMG_8386


    実践編



    懇親会では講義ではわからない「リアルなISUCONの戦い」について参加者から沢山の質問があったようです。 ISUCON7 は学生枠が12枠となりました、是非みなさんご参加ください!

    予選の応募申し込みはこちらから。
    ISUCON7 オンライン予選の参加登録を開始&参加チームとメンバーリスト : ISUCON公式Blog
    Read more...

    ↑このページのトップヘ