Y!ISUCON を実施します。
以下開催詳細を記載します。
1チームは1-3人とします。ポータルサイトのチーム登録フォームよりご登録下さい。
CentOS 7.2
Ruby, Node.js, Go, PHP, Java によるWebアプリケーションが用意されています。 ただし各々の初期性能は一致していません。どれをベースに用いても構いません。独自で実装してもOKです。
WebサーバとしてデフォルトでNginxが起動しています。 こちらも systemd で管理されています。
3306番ポートで MariaDB が起動しています。
ユーザーはroot
、パスワードなし。
初期設定ではNode.js実装のアプリケーションが起動しています。
ブラウザから80番ポートにアクセスして動作確認しましょう。
例として、「アカウント名」は kazuto、 「パスワード」は lbavup を入力することでログインが行えます。
リファレンス実装として、Node.js, Ruby, Go, PHPが用意されています。
各言語実装は systemd で管理されています。基本的には systemctl stop/start
ならびに systemctl enable/disable
で制御します。
systemd での切り替えのほか、nginxの設定変更が必要です。/etc/nginx/php-fpm.conf
が置いてあるのでそれを使用してください。
ポータルサイトから実行できます。 チームごとログインし、アプリケーションサーバの設定とベンチマーク実行を行ってください。
指定されたサーバー上のアプリケーションのチューニングをおこない、それに対するベンチマークのスコアで競技をおこないます。 そのサーバー1台のみでアプリケーションの動作が可能であればどのような変更を加えても構いません。
ベンチマーカーとブラウザの挙動に差異がある場合、ベンチマーカーの挙動を正とします。また初期実装毎に若干の挙動の違いはありますが、ベンチマーカーに影響のない挙動に関しては仕様とします。
与えられたアプリケーションから、以下の機能は変更してはいけません。
- アクセス先のURI(ポート、およびHTTPリクエストパス)
- レスポンス(HTML)のDOM構造
- JavaScript/CSSファイルの内容
基本スコアは以下のルールで算出されます。
成功レスポンス数(GET) x 1 + 成功レスポンス数(POST) x 2 - (サーバエラー(error)レスポンス数 x 10 + リクエスト失敗(exception)数 x 20 + 遅延POSTレスポンス数 x 100)
ただし、基本スコアとベンチマーカーの出すスコアが異なっている場合は、ベンチマーカーの出すスコアが優先されます。
以下の事項に抵触すると減点対象となります。
- 存在するべきDOM要素がレスポンスHTMLに存在しない
- リクエスト失敗(通信エラー等)が発生する
- サーバエラー(Status 5xx)・クライアントエラー(Status 4xx)をアプリケーションが返す
- 他、ベンチマーカーが検出したケース
- リダイレクトはリダイレクト先が正しいレスポンスを返せた場合に、1回レスポンスが成功したと判断します
- POSTの失敗は大幅な減点対象です
以下の事項に抵触すると点数が無効となります。
- GET /initialize へのレスポンスが10秒以内に終わらない
- JavaScript/CSSファイルがアクセスできない