Code Monkey home page Code Monkey logo

isucon8-final's Introduction

ISUCON8 本戦問題

本番当日の動作環境

マシンスペック

チームごとに1物理マシンを割り当てており、それぞれのチームごとのVMは下記のようになっていました。

  • 各チーム毎に配布したVM x 4
    • vCPU 2コア : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
    • メモリ 1GB
    • ネットワーク帯域 1Gbps
    • ディスク SSD
  • ベンチマーカー x 1
    • vCPU 3コア : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
    • メモリ 2GB
    • ネットワーク帯域 1Gbps
    • ディスク SSD
  • 外部API x 1
    • vCPU 3コア : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
    • メモリ 2GB
    • ネットワーク帯域 1Gbps
    • ディスク SSD

ネットワーク

マニュアル に記載があるように、グローバルIPとプライベートIPとベンチマーカーIPの3つのNICが存在し、それぞれネットワークは別れておりました。

初期状態

2018/10/20(土)の本戦当日は、isuconユーザーのhomeディレクトリは下記のようになっておりました。 ※ このリポジトリのwebappのみを配置しかつ webapp/sql ディレクトリはrmしておりました。

isucon2018-final
  ├── docs
  └── webapp
      ├── mockservice
      ├── mysql
      ├── nginx
      ├── public
      ├── go
      ├── perl
      ├── php
      ├── python
      └── ruby

※ サービスは、下記の/etc/systemd/system/isucoin.serviceによってsystemdで起動しておりました

[Unit]
Description = isucoin application

[Service]
LimitNOFILE=102400
LimitNPROC=102400

WorkingDirectory=/home/isucon/isucon2018-final/webapp

ExecStartPre = /usr/local/bin/docker-compose -f docker-compose.yml -f docker-compose.go.yml build
ExecStart = /usr/local/bin/docker-compose -f docker-compose.yml -f docker-compose.go.yml up
ExecStop = /usr/local/bin/docker-compose -f docker-compose.yml -f docker-compose.go.yml down

Restart   = always
Type      = simple
User      = isucon
Group     = isucon

[Install]
WantedBy = multi-user.target

本戦当日のスコア

  • 初期スコア
    • go: 500前後
    • ruby: 500前後
    • python: 500前後
    • php: 1000前後
    • perl: 1200前後
  • 優勝スコア
    • 35,312 (最大の敵は時差)
  • 最大スコア
    • 51,834 (takedashi)

ローカルでのアプリケーションの起動

動作環境

webappの起動方法

アプリケーションは docker-compose で動かします

docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.go.yml up [-d]
docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.perl.yml up [-d]
docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.ruby.yml up [-d]
docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.python.yml up [-d]
docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.php.yml up [-d]

webappの言語実装を切り替える場合

一度downしてからbuildしてupし直します

例: go→perl

docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.go.yml down
docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.perl.yml build
docker-compose -f webapp/docker-compose.yml -f webapp/docker-compose.perl.yml up [-d]

blackboxの起動

競技中に使う外部APIとして下記の2種類があります。こちらも docker-compose で起動します

  • bank : 銀行API
  • logger : ログAPI
docker-compose -f blackbox/docker-compose.local.yml up [-d]

bench

準備

cd bench
make init
make deps
make build

実行

ベンチマークを実行するときは、webapp, blackbox の両方を起動した上で下記コマンドを実行してください

./bench/bin/bench

# 細かいオプションを指定する場合(手元では無いと思います)
./bench/bin/bench \
    -appep=https://localhost.isucon8.flying-chair.net \
    -bankep=https://compose.isucon8.flying-chair.net:5515 \
    -logep=https://compose.isucon8.flying-chair.net:5516 \
    -internalbank=https://localhost.isucon8.flying-chair.net:5515 \
    -internallog=https://localhost.isucon8.flying-chair.net:5516 \
    -result=/path/to/result.json \
    -log=/path/to/stderr.log

※ *.flying-chair.net 等のドメインの維持は保証しません

isucon8-final's People

Contributors

ken39arg avatar fujiwara avatar mp3 avatar mackee avatar methane avatar sorah avatar ocadaruma avatar sugyan avatar sonots avatar karupanerura avatar mix3 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.