0から学ぶIT技術

ローカルのドキュメント載せたり、IT関連の催し物の参加報告

ISUCON6予選に参加してきました

f:id:naro3:20161030182201p:plain

こんにちは。

ようやくIT関係の記事が執筆できて嬉しいです。

今回はISUCON*16に参加してきましたので、その感想や、結果報告となります。

 

メンバー

同好会の2年生の先輩、私と同級生。

2年生1人、1年生2人という構成です。

当初、役割分担などはありませんでした。(後述)

 

目標

予選突破。

有意義な時間にする(わけがわからないまま終わらない)。

 

勉強したところ

当初予定していたのは

言語、SQL*2Linux kernel*3でしたが、

準備期間が2週間しかなく、私達1年生は言語は何も書けず、データベースも触ったことがない状況でしたので、Python*4だけに集中して勉強しました(大変でした)。

そのため、役割分担もありませんでした。

先輩も忙しく、一緒に作業する機会があまりなかったので、進捗を報告し、アドバイスを受けながら、勉強しました。

 

問題

今回は、nginx*5で構築されたwebサーバーを限界まで高速化するという内容でした。

レギュレーションはこちらです。

isucon.net

 

当日の流れ

当日は、Microsoft azure*6にてVirtual Machine*7を構築するところからの開始でした。

まず、DearmSpark*8ではVirtual Machineを構築できないという問題に気づくまで1時間かかりました(自分の確認ミスです、すいません)。

次に、Virtual Machineの接続ボタンが押せないというトラブルが発生、先輩がSSH*9コマンドで接続、windowsの私たちは、Tera Term*10で先輩のパソコンに接続して作業をようやく開始(ここまでに2時間)。

先輩から今回のサーバーの構造や、データ、通信の流れを聞き、大まかに役割を分けました。

  • 先輩 全体を好きなように見てもらう。
  • 同級生 webサーバーの.pyファイル*11
  • 私 nginxの設定ファイル。

私は、まずnginxにキャシュをできるようにし、ついでに同時接続数なども変更しました。

その場で調べた付け焼き刃の知識でやりました。

qiita.com

qiita.com

試しにベンチマークをしてみました(ポータルサイトがあり、そこにIPを送ると点数で返してくれます)。

結果は「Fail」内容は「初期リクエストに失敗しました。」となっています。

GET /initializeが5秒以上だと駄目だと、確認しました。

さっそく、試すが5秒かかっているようには見えないです。

一応、.pyも見ましたが、よくわかりませんでした。

先輩にも聞きましたが、わからなかったです。

 

余談

先輩がソースコードを見て楽しくなっていました。

途中から、権限がないためPOSTできないのをできるようにしたり、ソースコードをじっくり見て、先輩に解説してもらったり、JavaPythonのクラスの仕様の違いなどの勉強会になりました(16時頃から)。

 

結果

Fail解決できないまま0点でした(Failは失格という扱いになるらしいです)。

 

感想

初めての大会でしたので気合入ってましたが、残念な結果でした。

特に「やってやった!」という感じがなかったのが悔しいです。

ですが、勉強会など有意義な時間でした。

また、Pythonを勉強するいいきっかけになったので、参加してよかったです。

来年は点を取れるように頑張ります。

運営の方々、ISUCON6に関わった方々、本当にありがとうございました。

*1:お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングの大会。

*2:関係データベース管理システム(RDBMS) において、データの操作や定義を行うためのデータベース言語(問い合わせ言語)。

*3:OSの中核である部分。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋。

*4:プログラム言語の1種。

*5:フリーでオープンなWebサーバー。

*6:MicrosoftのIaaS/PaaS。

*7:仮想マシン。1つのコンピューターで複数のOSを動作できる。

*8:Microsoftが提供する学生支援プログラムである。

*9:暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル

*10:windowsで使用できるリモートログオンクライアント。

*11:Pythonで書かれたプログラムファイル。