isucon6-final

module
v0.0.0-...-6b7e659 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2017 License: MIT

README

ISUCON6 final

当日のレギュレーションも参照してください。

ディレクトリ構成

├── ansible      # 競技者用インスタンスのセットアップ用ansble
├── azure        # 競技者用インスタンスのdeploy to Azure
├── bench        # ベンチマーカーのソースコード
├── portal       # ポータルサイトのソースコード
├── provisioning # 運営側(portal/bench/proxy)のセットアップ用ansible
└── webapp       # 各言語の参考実装

競技者用アプリケーション

DockerだけインストールされていればOS等は問わない。

webapp 以下を競技用マシンの /home/isucon/webapp に置けばセットアップ完成。

起動方法などは webapp/README.md に書いた。

portal, bench, proxy

portalに試しにログインしたい

  • 一般アカウント
    • user: 1 pass: y8aaZLdAXAXn
  • 運営アカウント
    • user: 9999 pass: Btw5R5fskVvXOzT

編集する場合は、/portal/cmd/importteams/main.go/portal/data/teams.tsv を参照のこと

portal

最初に起動する必要がある。consulが起動している。

bench

最低1台起動している必要がある。

proxy

VM名にはproxyと含む必要がある。consulが動くために最低3台必要なので、proxyは2台以上起動する必要がある。proxyは以下のような挙動をする。

  • portalと同じconsulのクラスタの一員になる
  • proxyはセットアップ時に、portalからnginxの設定を取得して設定を反映する
  • portalは参加者のIPアドレスが変更されたら、consul event -name="nginx_reload" -node="proxy"を叩く
    • /usr/local/bin/nginx_reloadを叩く
    • 全proxyはportalからnginxの設定を取得して設定を反映する
  • proxyは投入されると、consulのクラスタにjoinする
    • /usr/local/bin/update_membersを叩く
    • portalはmemberが増えたら、portalのDBに登録して、ベンチマーカーに渡す

proxyを減らす場合は以下の手順が必要

  • 減らすインスタンス上でconsul leaveと打つ
proxy全台をconsulで操作したい
  • proxy全台のnginxを起動したい
    • consul exec -node proxy "sudo systemctl start nginx"
  • consulのイベントを発行する
    • consul event -name="nginx_reload" -node="proxy"
Azure-CLIを使う方法
install
npm install azure-cli -g
login
azure login
azure account list
azure account set <ID>
Portalデプロイ例
parameters.json
{
    "vmName":{
        "value": "isucon6f-ex-portal(change name if you want)"
    },
    "sshPublicKey": {
        "value": "ssh-rsa ...(your ssh-public-key)"
    }
}

portalが要求する変数を書いておく。

command
azure group deployment create --template-file deploy.json -e parameters.json isucon6-final-dev
  • -e
    • パラメータ設定用ファイルの指定
  • --template-file
    • テンプレートファイルの指定

Directories

Path Synopsis
bench
http
Package http provides HTTP client and server implementations.
Package http provides HTTP client and server implementations.
http/cgi
Package cgi implements CGI (Common Gateway Interface) as specified in RFC 3875.
Package cgi implements CGI (Common Gateway Interface) as specified in RFC 3875.
http/cookiejar
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
http/fcgi
Package fcgi implements the FastCGI protocol.
Package fcgi implements the FastCGI protocol.
http/httptest
Package httptest provides utilities for HTTP testing.
Package httptest provides utilities for HTTP testing.
http/httptrace
Package httptrace provides mechanisms to trace the events within HTTP client requests.
Package httptrace provides mechanisms to trace the events within HTTP client requests.
http/httputil
Package httputil provides HTTP utility functions, complementing the more common ones in the net/http package.
Package httputil provides HTTP utility functions, complementing the more common ones in the net/http package.
http/internal
Package internal contains HTTP internals shared by net/http and net/http/httputil.
Package internal contains HTTP internals shared by net/http and net/http/httputil.
http/internal/nettrace
Package nettrace contains internal hooks for tracing activity in the net package.
Package nettrace contains internal hooks for tracing activity in the net package.
http/pprof
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
sse
svg
job
webapp
go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL