Skip to content

ポータルの使い方を知ろう

以下、PISCON(部内ISUCON)開催時かつISUCON11予選の問題を使って説明します。

ログイン

PISCON Portal を開き、traQでログインからログインしてください。

チームの作成

ログインしたら、サイドバーからチーム管理を開き、自分のチーム名を入力して作成してください。 alt text

既にあるチームに入る場合

「チーム管理」画面から、他のチームメンバーにメンバー追加をしてもらってください。

インスタンスの作成

チームを作成したら、以下の画面になると思います。 下の方にある「GitHub ID 管理」で GitHub の ID を 必ず 追加してください。自動的に GitHub で登録している SSH の公開鍵が自動的にサーバーに追加されます。パスワードによるログインが無効になっているので、公開鍵認証しか使えません。 GitHub に公開鍵を登録していない場合は、Webエンジニアになろう講習会の資料を参考に登録してください。 サイドバーからインスタンスを開き、インスタンスを作成してください。簡単に言うとサーバーの作成です。
立ち上がるまで1~2分かかります。

WARNING

とりあえず最初は1台だけ建てましょう。このPISCONの開催にあたって、サーバー代の予算がなんと10万円かかっています。
サーバー代の節約にご協力ください。複数人チームの場合は1人1台建ててもらって大丈夫です。

また、サーバーは起動している時間に比例して料金がかかりますが、サーバーを停止するとその増加を抑えることができます。寝る前や出かける前など、長い時間サーバーを使わないことが分かっている場合は、「停止」ボタンを押して節約にご協力ください。 「停止」したサーバーも「起動」を押すことでもとと同じ状態で使えるようになります。「削除」を押すとサーバーは完全に削除され、復元できなくなるので注意してください。

初期状態でのベンチマークの実行

インスタンスが立ち上がったら、ベンチマークを回しましょう! 1回のベンチマークにかかる時間は、約1分です。(どのISUCONでも基本的に1分程度だと思います。)

この1分の間に、ベンチマーカーがチームのサーバーに対して大量のリクエストを送り、凄い負荷をかけ、レスポンスからスコアを算出して返すわけですね。

ベンチマーカーって何なの?

ベンチマークを行うためのサーバーです。基本的には僕らのサーバーよりも高スペックのサーバーが使われます。
1分間に大量のリクエストをチームのサーバーに送り、凄い負荷をかけ、レスポンスからスコアを算出して返します。
スコアを計算する役割を担っている以上、競技の核とも言えます。なので、ベンチマーカーを作る人は、競技がいい感じに成り立つように、めちゃくちゃベンチマーカーの設計を頑張っています。ベンチマーカーの質がそのまま競技の質になりますからね。

キューについて

「ベンチマークを行う」を押すとキュー(順番待ち)に追加され、順番にベンチマークが実行されていきます。
PISCON競技中は混んでても4-5チームくらいがキューにいるくらいなので、そこまで待たされることはないです。
ISUCON本番ではチーム数が莫大なので、各チームに対してベンチマーカーが立てられ、すぐにベンチマークが実行できるようにされているなど、基本的には競技に支障が出ないように工夫がされています。

負荷走行は60秒

いわゆる負荷をかけまくる期間は60秒でも、その前後の初期化や整合性チェックに30~60秒かかります。
実際の負荷走行60秒は固定で、この負荷走行の間にどれだけのリクエストを処理できたかでスコアが決まります。

ベンチマークの結果を見てみよう

結果を見てみましょう。

text
15:00:42.745373 ===> PREPARE 
15:00:58.009663 ERR: prepare: critical: initializeに失敗しました 
15:00:58.009779 ERR: prepare: http: Post "http://192.168.0.11/initialize": dial tcp 192.168.0.11:80: connect: connection refused
(省略)
15:00:42.745373 ===> PREPARE 
15:00:58.009663 ERR: prepare: critical: initializeに失敗しました 
15:00:58.009779 ERR: prepare: http: Post "http://192.168.0.11/initialize": dial tcp 192.168.0.11:80: connect: connection refused
(省略)

どうやら、ベンチマークが成功しなかったようです。この状況をfailしたとか言います。
messagesを見ると、POST /initializeのリクエストが失敗したためfailしてしまったようです。
本来であれば、最初から既に正常に動作する状態でサーバーが渡されるのですが、
今回のPISCONでは諸事情により少し設定をしなければなりません。次の章で一緒に設定をしましょう。

INFO

今回、インスタンスを作成しただけでは、nginxがSSL/TLSを無効な証明書を使って行おうとするため、ベンチマーカーを実行できません。
それを回避するために/etc/nginx/sites-available/isucondition.confを次のように書き換える必要があります。書き換え方は次の章で説明します。
PISCONドキュメントページより

ここまでウェブページ上だけで全部できちゃった!

本番でも、サーバーの構築や、ベンチマークの実行などは、このようにウェブページ上ですべてできるようになっています。
僕たち参加者が、競技に集中するために複雑な部分はこうやって抽象化してくれてるわけですね。ありがたい!