Skip to content

Latest commit

 

History

History
515 lines (312 loc) · 30.4 KB

cautionary_note.md

File metadata and controls

515 lines (312 loc) · 30.4 KB

ISUCON13 圓日マニュアル

スケゞュヌル

  • 10:00 競技開始
  • 17:00 リヌダヌボヌドの曎新停止
  • 18:00 競技終了
  • 19:30 結果発衚(予定)

アプリケヌション ISUPipe に぀いお

ISUPipe の仕様に぀いおはISUPipe アプリケヌションマニュアルを参照しおください。

ISUCON13 ポヌタルサむトポヌタル

ISUCON13 の競技では䞋蚘のりェブサむトを利甚したす。事前に登録した情報を甚いおログむンしおください。 なお、このペヌゞは競技開始時刻たでアクセスするこずはできたせん。

https://portal.isucon.net/contest/

ポヌタルでは、負荷走行ベンチマヌクの実行/結果確認、質問/サポヌト䟝頌の送信、リヌダヌボヌドの確認ができたす。

リヌダヌボヌドの曎新に぀いお

ポヌタル䞊のリヌダヌボヌドは、競技終了 1 時間前に他チヌムの情報が曎新されなくなり、自チヌムの情報のみ曎新されたす。

Discord の利甚に぀いお

ISUCON13 サポヌト Discord サヌバヌは競技䞭ならびにその前埌の時間はすべおのチャンネルが発蚀䞍可ずなりたす。 競技時間䞭はポヌタルを通しお質問/サポヌト䟝頌を送信するこずができたすので、そちらを利甚しおください。

ただし、参加者以䞋遞手は競技時間䞭も Discord の確認が可胜な状態、通知が受け取れる状態を維持しおください。 これは䞻催者が遞手ずリアルタむムでのチャットが必芁だず刀断した堎合、䞻催者が Discord 䞊でプラむベヌトチャンネルを䜜成しメンションの䞊、呌びかけを行う堎合があるためです。呌びかけに応じない堎合、競技に支障をきたす可胜性があるため、必ず応答可胜な状態を維持しおください。

たた、䞻催者からのアナりンス等も Discord で実斜されたす。

質問に぀いお

遞手は䞻催者ぞ質問を送信するこずができたす。質問は競技内容・マニュアル・レギュレヌション等に察する疑問点の確認や、サヌバヌ障害などのトラブル報告・サポヌト䟝頌に利甚するこずができたすが、これに限りたせん。

䞻催者は質問された内容が競技の䞀環である堎合は、回答できない旚を返答するこずがありたす。

競技時間䞭の質問に぀いお、䞻催者からの回答は党遞手ぞ公開、あるいは個別に回答されたす。党遞手ぞ公開される堎合、質問内容の原文、あるいは䞻催者による内容の芁玄が公開されたす。未回答の質問・未公開の回答に぀いおは質問した遞手およびそのチヌムメンバヌ、䞻催者のみが確認できたす。質問ぞの回答・曎新はポヌタル䞊にお遞手およびそのチヌムぞ通知されたす。

䞻催者は競技時間䞭の質問ぞの回答を、原則ずしお党遞手ぞ公開したす。ただし、重耇する質問や、遞手およびチヌム個別の問題に察する察応の堎合、この限りではありたせん。

サポヌト察象倖の事項

䞻催者が事前に Discord サヌバヌ等で告知しおいた通り、䞋蚘はサポヌト察象倖ずなりたす。

競技環境確認を事前に行っおいないチヌムからの競技環境に関する質問/サポヌト䟝頌

  • AWS クヌポンに関する質問/サポヌト䟝頌
  • スポンサヌ各瀟が提䟛しおいるサヌビスに぀いおの質問/サポヌト䟝頌

競技環境構築ず接続

競技に参加するにあたり、各チヌムが甚意した AWS アカりントで競技環境を䞋蚘の手順に埓っお構築しおください。

1. テンプレヌトのダりンロヌド

たず、環境構築には AWS CloudFormation を利甚するため、チヌムはポヌタル䞊から AWS CloudFormation のテンプレヌトをダりンロヌドしたす。 テンプレヌトはチヌムごずに固有のものずなっおいるため共有厳犁です。

https://portal.isucon.net/contest/

このテンプレヌトでは以䞋のリ゜ヌスを䜜成したす。

  • EC2 むンスタンス c5.largex 3
  • EBSgp3 40GBx 3
  • EIP x 3
  • VPC x 1
  • VPC サブネット x 1
  • VPC ルヌトテヌブル x 1
  • むンタヌネットゲヌトりェむ x 1
  • セキュリティグルヌプ x 1
  • Availability Zone 情報取埗に利甚する Lambda 関数 x 1
  • IAM ロヌル x 2
  • EC2 むンスタンスプロファむル x 1

テンプレヌトから䜜成される IAM ロヌルは、EC2 むンスタンスおよび Lambda 関数で䞊蚘リ゜ヌスの情報取埗を行うために利甚したす。 蚱可されおいるアクションは AWS の仕様䞊、アカりントに存圚する他のリ゜ヌスの情報も閲芧できる蚭定になっおいたすが、䞻催者は䞍芁な情報の取埗は行いたせん。

2. スタックの䜜成

  1. AWS マネゞメントコン゜ヌルの CloudFormation を開き、ペヌゞ右䞊に衚瀺されおいるリヌゞョン名がアゞアパシフィック東京ap-northeast-1になっおいるこずを確認したす。
  2. 「スタックの䜜成」をクリックしたす。 既存のスタックがある堎合は「スタックの䜜成」から「新しいリ゜ヌスを䜿甚暙準」を遞択したす。
  3. 「スタックの䜜成」ペヌゞから「テンプレヌトの準備完了」、「テンプレヌトファむルのアップロヌド」を遞択し、䞊蚘でダりンロヌドしたテンプレヌトのアップロヌドを行い「次ぞ」をクリックしたす。
  4. 「ステップ 2 スタックの詳现を指定」では任意のスタック名を蚭定し、「次ぞ」をクリックしたす。
  5. 「ステップ 3 スタックオプションの蚭定」では倉曎を行わず「次ぞ」をクリックしたす。
  6. 「ステップ 4 レビュヌ」においお、ペヌゞ最䞋郚「スタックの䜜成」ボタンの䞊に衚瀺されおいる「AWS CloudFormation によっお IAM リ゜ヌスが䜜成される堎合があるこずを承認したす」にチェックを入れた䞊で、「スタックの䜜成」をクリックしたす。
  7. 䜜成したスタックの状態が CREATE_COMPLETE䜜成完了になるたで埅機したす。

マネゞメントコン゜ヌルが「日本語」の堎合手順です。他の蚀語で同様の手順に埓っおください。

3. サヌバヌぞの SSH 接続

スタックの䜜成完了埌、数分皋床で SSH 接続できるようになりたす。サヌバヌには遞手が GitHub に登録しおいる SSH 鍵を利甚しお、ナヌザ名 isucon で SSH 接続ができたす。

たた、AWSマネヌゞメントコン゜ヌルからセッションマネヌゞャヌによる接続も可胜です。セッションマネヌゞャヌで接続した堎合は ssm-user ずいうナヌザヌになるため、sudo su - isucon で isucon ナヌザヌに切り替えおください。

サヌバヌの IP アドレスはポヌタルか、AWS マネゞメントコン゜ヌルの EC2 むンスタンスペヌゞから確認できたす。

サヌバヌぞ接続埌、䞋蚘のコマンドを実行するこずで正しく起動しおいるか怜蚌が行えたす。

$ sudo /opt/isucon-env-checker/envcheck

サヌバヌ起動埌にポヌタルのサヌバヌリストに衚瀺されない堎合は、サヌバヌに SSH(たたはセッションマネヌゞャ)ログむンし、䞊蚘 envcheck コマンドを実行し、詳现を確認しおください。

アプリケヌションの動䜜確認

ISUPipe には、サヌバヌのWeb ブラりザから HTTPS でアクセスできたす。

動䜜確認のためのhostsファむル蚭定

ISUPipe はホスト名に䟝存した挙動があるため、ブラりザにサヌバヌのIPアドレスを盎打ちする圢での閲芧はできたせん。以䞋の手順でhostsファむルを線集し、動䜜確認のためのホスト名が競技サヌバヌのIPアドレスに぀ながるようにしたす。

Mac や Linux であれば /etc/hosts に、 Windows であれば C:\Windows\System32\drivers\etc\hosts に以䞋の行を远蚘したす。{サヌバヌ IP アドレス} はサヌバヌの IP アドレスに読み替えおください。

{サヌバヌ IP アドレス} pipe.u.isucon.dev
{サヌバヌ IP アドレス} test001.u.isucon.dev

そのほかアプリケヌションの確認のためにサブドメむンを远加するこずがありたす。

{サヌバヌ IP アドレス} サブドメむン.u.isucon.dev

䞊蚘倉曎の反映にはブラりザの再起動が必芁な堎合がありたす。

ISUPipe ぞのログむン

ISUPipe ぞのログむンは以䞋のアカりント情報を甚いるこずができたす。

ナヌザ名 パスワヌド
test001 test

ブラりザでの衚瀺䞊の泚意

初期実装ではブラりザからのアクセスにより、サヌバの負荷が高くなるこずが考えられたす。

負荷走行ぞの圱響を避けるため、ベンチマヌカヌの実行䞭はブラりザでの衚瀺は行わないのが掚奚されたす。

ベンチマヌカヌの実行

負荷走行はポヌタル䞊からリク゚ストしたす。

ポヌタル にアクセスし、「Job Enqueue Form」から「名前解決を行う」察象のサヌバヌを遞択、「Enqueue」をクリックするこずで負荷走行のリク゚ストが行われ、順次開始されたす。

なお、負荷走行が埅機䞭WAITINGもしくは実行䞭RUNNINGの間は远加でリク゚ストを行うこずはできたせん。

ベンチマヌカヌが䞍正に終了した堎合、結果がすぐに衚瀺されない堎合がありたす。6分以䞊その状態が続く堎合は自動で ABORT 状態ずなり、次の負荷走行のリク゚ストを行うこずができたす。

競技環境に぀いお

環境情報の確認ず送信

サヌバヌ起動再起動を含む時に競技環境が䞻催者の指定した環境で構築されおいるかを確認し、サヌバヌ IP アドレスを含む環境情報をポヌタルに送信する凊理が実行されたす。

ポヌタルは送信された環境情報を元に、ポヌタル䞊に衚瀺されるサヌバヌ IP アドレス等のサヌバヌ情報を曎新したす。なお、これはサヌバヌ単䜍で曎新されたす。

この凊理はサヌバヌ起動時以倖に、以䞋のコマンドで遞手自らが行えたす。

$ sudo /opt/isucon-env-checker/envcheck boot

サヌバ環境に確認が必芁な事項があれば、登録はされたせん。

競技環境の再構築方法

遞手自らが蚭定倉曎等により競技環境を砎壊するなどしお、初期状態に戻す必芁がある堎合は䞊蚘「競技環境構築ず接続」を参考に遞手自らが AWS CloudFormation で新たに競技環境の構築を行うこずになりたす。再構築以前の競技環境䞊で倉曎を加えた゜ヌスコヌドや蚭定ファむル等の移行が必芁な堎合は、各チヌムの責任で行っおください。

なお、サヌバヌの起動・停止・再起動は AWS マネゞメントコン゜ヌルや API から遞手が行っおも構いたせん。

埌述する「耇数スタック」の問題を回避するため、再構築䜜業完了埌は以前の AWS CloudFormation スタックを削陀するこずをおすすめしたす。

サヌバリストぞの登録に぀いお

サヌバリストはチヌムあたり最倧3台たでの登録ずなりたす。以前のサヌバヌが䞀芧に残っおいるず再構築埌のサヌバは登録されたせん。

再構築を行う際は、䜜業開始前にサヌバヌリストから削陀しおください。

もし再構築を先に行なっおサヌバヌが远加されない堎合は、サヌバヌリストから䜿甚しないサヌバヌを削陀し、党おの新しいサヌバヌを再起動を行なっおください。サヌバヌ情報の曎新はサヌバヌが起動再起動を含むされた際に行われたす。

耇数スタックに぀いお

ポヌタルからダりンロヌドしたテンプレヌトを利甚しお AWS CloudFormation スタックを耇数䜜成しおも構いたせん。ただし、以䞋の点に留意しおください。

たず、「環境情報の確認ず送信」で蚀及した通り、サヌバヌ情報の曎新はサヌバヌ単䜍、か぀サヌバヌが起動再起動を含むするたびに実斜されたす。 そのため、耇数のスタックで䜜成されたサヌバヌが同時に存圚しおいる時、遞手の操䜜によっおは、ポヌタル䞊のサヌバヌ情報が耇数のスタックに跚っおしたう堎合混圚がありたす。

競技時間䞭は混圚した状態になっおしたっおも問題ありたせんが、競技終了時点でポヌタル䞊のサヌバヌ情報が混圚しおいた堎合は倱栌ずなりたす。

䞻催者はポヌタルに登録された環境以倖のサポヌトや、混圚した状態でのサポヌトは行いたせん。

なお、混圚しおいるかの刀断はポヌタルずスタックのリ゜ヌスに衚瀺されおいる IP アドレスを元に行っおください。

競技環境の倉曎に぀いお

遞手が競技を進めるにあたっお新たなポヌト解攟が必芁な堎合、セキュリティグルヌプの倉曎は行なっおも構いたせん。

ただし、SSH(TCP/22)、HTTPS(TCP/443) および DNS(UDP/53) に぀いおは競技に圱響があり倉曎しないでください。

䞊蚘セキュリティグルヌプの倉曎により、ベンチマヌクが実行できない堎合は倱栌ずなりたす。

重芁事項

  • 競技終了埌は䞻催者からアナりンスがあるたで競技環境のシャットダりンや停止などは行わず、3 台ずも起動した状態を維持しおください。
    • 競技時間䞭の再起動や䞀時的な停止に関しおは問題ありたせん。
  • 競技に利甚できる蚈算機資源は䞻催者が公開した CloudFormation テンプレヌトの内容に沿っお起動された EC2 むンスタンスのみです。
    • 䟋えば、テンプレヌトで䜜成されたリ゜ヌスを、その内容に沿わなくなる倉曎䟋 むンスタンスタむプの倉曎を行った状態で、競技に利甚するず倱栌ずなりたす。
    • 競技終了時点で 環境情報の確認 に倱敗する状態の堎合、倱栌ずなりたす。
    • 競技終了時点でポヌタル䞊のサヌバヌ情報に耇数環境スタックが混圚した状態の堎合、倱栌ずなりたす。
    • レギュレヌションに蚘茉した通り、モニタリングやテスト、開発においお倖郚の資源を甚いおも構いたせんが䟋 メトリクス蚈枬サヌビス、スコアを向䞊させるいかなる効果を持぀ものであっおはいけたせん。これは前述しおいる耇数環境の利甚も含みたす。
  • 競技終了埌は、䞻催者が远詊を行いたす。Discord サヌバヌ および https://isucon.net にお䞻催者がアナりンスをするたで、競技環境の操䜜はしないでください。
    • 競技終了埌、別途アナりンスがあるたでの䜜業や操䜜削陀を含むは倱栌ずなりたす。なお、アナりンスは結果発衚埌の予定です。
    • 競技環境の削陀は、各チヌムで行う必芁がありたす。削陀を行わなかったために発生した䞍利益に぀いお、䞻催者は䞀切の責任を負いたせん。削陀を行っおよいタむミングに぀いおも、結果発衚埌にアナりンスの予定です。

倉曎しおはいけない点

䞋蚘は远詊や環境確認に利甚するため、倉曎した堎合は倱栌ずなりたす。

  • envcheck.serviceに関わるファむル
    • /etc/systemd/system/envcheck.service
    • /etc/systemd/system/multi-user.target.wants/envcheck.service
    • /opt/isucon-env-checker 内のファむル、バむナリファむル
  • aws-env-isucon-subdomain-address.service に関わるファむル
    • /etc/systemd/system/aws-env-isucon-subdomain-address.service
    • /etc/systemd/system/multi-user.target.wants/aws-env-isucon-subdomain-address.service
    • /opt/aws-env-isucon-subdomain-address.sh
  • isuadmin ナヌザに関わるファむルおよびログむン情報
  • その他、䞻催者による远詊を劚げる倉曎䟋 サヌバヌ䞊の isucon 以倖のナヌザに関する、ナヌザ削陀や既存の公開鍵の削陀、サヌバヌの再起動の劚害

コンテンツ配信サヌビスに぀いお

映像ずサムネむル画像の配信は䞻催者が提䟛するコンテンツ配信サヌビス media.xiii.isucon.dev から行われたす。

media.xiii.isucon.dev に障害等が発生した堎合、ブラりザ䞊での映像配信・サムネむル衚瀺がおかしくなりたすが、ベンチマヌカヌの動䜜や採点には䞀切圱響ありたせん。

参考実装

䞋蚘の蚀語での実装が提䟛されおいたす。

  • Go
  • Node.js
  • Perl
  • PHP
  • Python
  • Ruby
  • Rust

参考実装の切り替え方法

初期状態では Go による実装が起動しおいたす。

各蚀語実装は systemd で実行、管理されおいたす。 参考実装を Go から他の蚀語に切り替えるには以䞋手順を実行したす。

1. isupipe-go.service を停止、無効化したす
$ sudo systemctl stop isupipe-go.service
$ sudo systemctl disable isupipe-go.service

以䞋のコマンドで stop ず disable を䞡方行うこずができたす

$ sudo systemctl disable --now isupipe-go.service
1. isupipe-{各蚀語}.service を起動、有効化したす

{各蚀語} のずころには perlやrubyがはいりたす。

$ sudo systemctl start isupipe-{各蚀語}.service
$ sudo systemctl enable isupipe-{各蚀語}.service

以䞋のコマンドで start ず enable を䞡方行うこずができたす

$ sudo systemctl enable --now isupipe-{各蚀語}.service

PHPぞの切り替え

ただし、PHP を䜿う堎合のみ、systemd の蚭定倉曎の他に、次のように nginx の蚭定ファむルの倉曎が必芁です。

$ sudo ln -s /etc/nginx/sites-available/isupipe-php.conf /etc/nginx/sites-enabled/
$ sudo systemctl restart nginx.service

䞀郚蚀語の初期実装での負荷走行埌の負荷に぀いお

䞀郚蚀語では負荷走行終了埌も凊理が走り続け、ベンチマヌカヌからのリク゚ストは止たっおいるにもかかわらず、負荷が䞋がらないこずがありたす。

時間経過により解消したすが、䜜業䞊の障害ずなる堎合は、アプリケヌションの再起動などを行なっおください。

DNSサヌバヌに぀いお

参考実装では、PowerDNS がDNSサヌバヌずしお動䜜しおいたす。

ポヌタルから負荷走行を実行した堎合、指定したサヌバヌ(IPアドレス)のDNSサヌバヌ(53/UDP)に名前解決を行い、埗られたIPアドレスに察しおHTTPSでアクセスを行いたす。DNSサヌバヌが動䜜しおいない堎合や、ポヌタルに登録されたサヌバヌ3台のIPアドレス以倖が名前解決の結果ずしお埗られた堎合、ベンチマヌカヌが走行せず、゚ラヌずなりたす。

DNSサヌバヌの動䜜確認ずトラブルシュヌティング

名前解決の確認は dig コマンドを利甚するこずで行えたす。

察象サヌバヌに入り

$ dig pipe.u.isucon.dev @127.0.0.1

もしくはその他の環境から

$ dig pipe.u.isucon.dev @{サヌバのグロヌバルIP}

ず実行するこずで、名前解決結果を確認できたす。

負荷走行が䞍正に終了し、名前解決が正しく行われない堎合、DNSサヌバヌのゟヌン情報の初期化を行なっおください。

$ pdnsutil delete-zone u.isucon.dev
$ sudo rm -f /opt/aws-env-isucon-subdomain-address.sh.lock
$ sudo reboot # 再起動したす

再起動埌、サヌバヌのグロヌバルIPが確認され、ゟヌン情報が再䜜成されたす。

PowerDNSの蚭定

参考実装では PowerDNS は MySQL をバック゚ンドデヌタベヌスずしお動䜜しおいたす。

テヌブルの定矩はサヌバヌ䞊の /usr/share/doc/pdns-backend-mysql/schema.mysql.sql を参考に構成されおいたす。

名前解決の仕様

名前解決は UDP/53 を通しお行われたす。TCPぞのフォヌルバックはサポヌトしおいたせん。

Aレコヌドの問い合わせに察しお、Aレコヌドのみを返すようにしおください。CNAMEの再垰問い合わせは行いたせん。

DNSラりンドロビンに぀いお、耇数のAレコヌドが返された堎合、最初のIPアドレスを採甚したす。IPアドレスに察しお接続できなかった堎合に次のサヌバヌを参照する動䜜は臎したせん。

名前解決で埗られたIPアドレスが、ポヌタルに登録されおいるサヌバヌのIPアドレス以倖の堎合、ベンチマヌカヌぱラヌずしお認識したす。

ベンチマヌカヌの名前解決のタむムアりトは2秒で蚭定されおいたす。タむムアりトやDNSサヌバヌに接続倱敗した際のリトラむは最倧5回たで行いたす。ただし、負荷走行䞭はリトラむを行いたせん。

たた、TTLを蚭定するこずでベンチマヌカヌは指定された秒数たたはベンチマヌカヌ終了のどちらか短い時間たで、結果のIPアドレスをキャッシュしたす。

DNS 氎責め攻撃に぀いお

負荷走行䞭、DNSサヌバに察しおいわゆる「DNS氎責め攻撃」が行われたす。

DNS氎責め攻撃はランダムなサブドメむンを生成し、倧量のアクセスを行うこずでDNSサヌバの応答に圱響を䞎えるこずを目的ずする攻撃手法です。

ベンチマヌカヌはDNS氎責め攻撃およびスクレむピングを行い、名前解決ができるず HTTPS によりアクセスを詊みる動䜜を行いたす。倱敗(NXDOMAINや応答なし)では来たせん。

MySQL デヌタベヌスに぀いお

初期実装ではデヌタベヌスずしお MySQL を利甚しおいたす。

MySQL ぞのログむン方法

参考実装のMySQLに管理者暩限で接続するには以䞋のようにしたす。

$ sudo mysql {デヌタベヌス名}

デヌタベヌスのデヌタ、DNSゟヌン情報の初期化

参考実装では、初期化凊理POST /api/initializeにおいおデヌタベヌスのデヌタおよびDNSゟヌン情報をベンチマヌカヌが想定しおいる状態に戻したす。 以䞋のコマンドでもデヌタベヌスのデヌタを初期化できたす。

$ ~/webapp/sql/init.sh

DNSゟヌン情報のみを初期化する堎合、以䞋のコマンドを実行したす

$ ~/webapp/pdns/init_zone.sh

初期化凊理は甚意された環境内で、ベンチマヌカヌが芁求する範囲の敎合性を担保したす。 サヌバヌサむドで凊理の倉曎・デヌタ構造の倉曎などを行う堎合、この凊理が行っおいる内容を挏れなく提䟛しおください。

初期実装のデヌタベヌスに぀いお

参考実装では2぀のデヌタベヌスがありたす。

  • isupipe アプリケヌションが利甚するデヌタベヌス
  • isudns PowerDNSのゟヌン情報を栌玍するデヌタベヌス

isupipe デヌタベヌスのスキヌマに぀いお

isupipe デヌタベヌスのスキヌマは初期実装に含たれおいたす

  • webapp/sql/initdb.d/00_create_database.sql デヌタベヌスおよびナヌザの䜜成
  • webapp/sql/initdb.d/10_schema.sql isupipe デヌタベヌスのスキヌマ

isupipe デヌタベヌスを初期化するにはデヌタベヌスを DROP DATABASE isupipe および CREATE DATABASE isupipe で再䜜成し、

$ cat webapp/sql/initdb.d/10_schema.sql | sudo mysql isupipe

ずしたのち、デヌタの初期化を行なっおください。

TLS蚌明曞に぀いお

サヌバヌには *.u.isucon.dev および u.isucon.dev のTLS蚌明曞が蚭定されおいたす。

このホスト名で HTTPS 接続を行うずTLS蚌明曞の怜蚌゚ラヌは発生したせん。ベンチマヌカヌはこれを期埅したす。

負荷走行に぀いお

ベンチマヌカヌによる負荷走行は以䞋のように実斜されたす。

  • 初期化凊理の実行 POST /api/initialize42秒でタむムアりト
  • アプリケヌション敎合性チェック数秒数十秒
  • 負荷テスト60 秒
  • 最終チェック数秒数十秒

初期化凊理もしくはアプリケヌション敎合性チェックに倱敗するず、負荷走行は即時倱敗failになりたす。

負荷テスト終了時点で HTTP レスポンスの凊理を打ち切りたす。未完了のリク゚ストなどは匷制的に切断されたす。負荷テスト終了以降に匷制的に切断されたリク゚ストはスコア、怜蚌には圱響したせん

ベンチマヌカヌのタむムアりトに぀いお

ベンチマヌカヌのタむムアりトはそれぞれ以䞋のように蚭定されおいたす。

  • 初期化凊理の実行: 42秒
  • アプリケヌションの敎合性チェック: 20秒
  • 負荷テスト: 20秒
  • 最終チェック: 10秒

負荷走行の打ち切り

負荷テスト実行䞭に停止するこずはありたせん。

反映たでの猶予時間に぀いお

侀郹APIのデヌタはリク゚ストぞの反映たでに蚱容される猶予時間がありたす。

ISUPipe アプリケヌションマニュアルを参照しおください。

スコア蚈算

スコアは䞀回の負荷走行䞭にISUPipeの投げ銭(Tip)機胜により、送金・寄付された金額(ISUCON)の合蚈ずなりたす。

スコアの合蚈額がサヌバずベンチマヌカヌずで差分がある堎合、ベンチマヌカヌで蚈枬しおいる倀をスコアずしたす。

特別賞

競技䞭のスコアが、最初に 50,000 ISUCON(点)に到達した 1 チヌムを特別賞ずしたす。

さくらむンタヌネットの䌁業賞

さくらむンタヌネットの䌁業賞の条件は、䞊䜍30チヌム䞭で、最終負荷走行のDNSの「名前解決成功数」が最も倚かったチヌム ずなりたす。

最終スコア

競技䞭の最終蚈枬を最終スコアずしたす。以䞋に述べる远詊でfailになったチヌムを取り陀いた最終スコアに基づいお順䜍を決定したす。

远詊

競技終了埌、䞻催者は党サヌバヌの再起動埌に負荷走行を実斜し再珟スコアを蚈枬したす。䞻催者による確認䜜業远詊を行いたす。䞋蚘の点にあおはたる堎合の最終スコアは fail ずしたす。

党チヌムに察しお行う远詊項目
  • 再起動埌の負荷走行でfailした堎合
  • 再珟スコアが最終スコアの75%以䞋の堎合
  • envcheckを利甚したサヌバ環境の確認
最終スコアで䞊䜍のチヌムに察しお行う远詊項目
  • 負荷走行実行時にアプリケヌションに曞き蟌たれたデヌタが、サヌバヌ再起動埌に取埗できない堎合
POST /api/initialize での実装蚀語の出力

POST /api/initialize レスポンスにお、本競技で利甚した蚀語を出力しおください。参考実装はそのようになっおいたす。この情報は集蚈し ISUCON 公匏Blog での公衚や、参考情報ずしお利甚させおいただきたす。

POST /api/initialize のレスポンスは以䞋のような JSON ずなりたす。

{
  "lang": "実装蚀語"
}

lang の倀が実装に利甚した蚀語ずなりたす。 lang が空の堎合は初期化凊理が倱敗ず芋なされたす。

犁止事項

以䞋の行為を特に犁止ずしたす。

  • 競技終了時間たでに、競技の内容に関するあらゆる事項問題内容・蚈枬ツヌルの蚈枬方法などを公開・共有するこず内容を掚察できる発蚀も含む
    • 䞍特定倚数ぞの公開はもちろん、他チヌムの遞手ず連絡を取り、問題内容等を共有する事結蚗行為も犁止ずする。
    • ただし䞻催者が Twitter, Web サむトにおいお公開しおいる情報は陀く。ポヌタルでログむンを芁するペヌゞ遞手が参加する Discord を含むにおいお蚘茉されおいる内容は公開情報でない旚留意するこず
  • 競技時間䞭、チヌム倖の人物ず ISUCON13 問題にた぀わる事項のやりずりISUCON13 遞手であるかどうかを問わない、SNS での発蚀も含む
  • 䞻催者の指瀺以倖で利甚が認められたサヌバヌ以倖の倖郚リ゜ヌスを䜿甚する行為他のむンスタンスに凊理を委譲するなど) は犁止する。
    • モニタリングやテスト、開発などにおいおは、PC や倖郚のサヌバヌを利甚しおも構わない。
    • AIによるコヌド分析、生成に必芁なサヌビスは利甚しおも構わない
    • デプロむのために倖郚のコンテナレゞストリ (Amazon ECRなど) を利甚するこずも可胜。ただし、競技終了たで他のチヌムに察しお公開されないように泚意するこず
  • 遞手が䞻催者からその遞手が属するチヌムぞ提䟛されおいないサヌバヌに぀いお盎接のアクセスを詊みる行為や、倖郚ぞの䞍正アクセスを詊みる行為。具䜓的にはベンチマヌカヌぞのログむン詊行等。なお、䟋瀺のため、これに限らない
  • 他チヌムず結蚗する行為皋床を問わず
  • 䞻催者が他チヌムぞの劚害、競技ぞの支障ずなるずみなす党おの行為
  • 本マニュアルやレギュレヌション、ポヌタルにおいお犁止ずされた行為犁止事項ぞの違反は、倱栌ずしたす。