isucon8-qualify

  • Owner: isucon/isucon8-qualify
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

ISUCON8 予選問題

本番のマシンスペック

  • vCPU 2コア : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
  • メモリ 1GB
  • ネットワーク帯域 1Gbps
  • ディスク SSD

のVMを競技用に3台。同スペックのVMをベンチマーカー用に1台。

本番のOS/初期ミドルウェア

  • CentOS 7.5.1804
  • MariaDB 5.5.60
  • H2O 2.2.5

感想戦用、1VMでの動かし方

環境構築の詳細については provisioning を参照。

環境構築

xbuildで言語をインストールする。ベンチマーカーのためにGoは必須。他の言語は使わないのであればスキップしても問題ない。

cd
git clone https://github.com/tagomoris/xbuild.git

mkdir local
xbuild/go-install     1.10.3  $HOME/local/go
xbuild/perl-install   5.28.0  $HOME/local/perl
xbuild/ruby-install   2.5.1   $HOME/local/ruby
xbuild/node-install   v8.11.4 $HOME/local/node
xbuild/python-install 3.7.0   $HOME/local/python
xbuild/php-install    7.2.9   $HOME/local/php -- --with-pcre-regex --with-zlib --enable-fpm --enable-pdo --with-pear --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-pcre-regex --with-pcre-dir --with-libxml-dir --enable-opcache --enable-bcmath --with-bz2 --enable-calendar --enable-cli --enable-shmop --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-mbregex --enable-mbstring --enable-pcntl --enable-sockets --with-curl --enable-zip

ベンチマーカーの準備

Goを使うのでこれだけは最初に環境変数を設定しておく

export PATH=$HOME/local/go/bin:$HOME/go/bin:$PATH

ビルド

$ cd bench
$ make deps
$ make

初期データ生成

$ cd bench
$ ./bin/gen-initial-dataset   # ../db/isucon8q-initial-dataset.sql.gz ができる

データベース初期化

データベース初期化、アプリが動くのに最低限必要なデータ投入

$ mysql -uroot
mysql> CREATE USER isucon@'%' IDENTIFIED BY 'isucon';
mysql> GRANT ALL on torb.* TO isucon@'%';
mysql> CREATE USER isucon@'localhost' IDENTIFIED BY 'isucon';
mysql> GRANT ALL on torb.* TO isucon@'localhost';
$ ./db/init.sh

参考実装(perl)を動かす

初回のみ

$ cd webapp/perl
$ cpanm --installdeps --notest --force .

起動

$ ./run_local.sh

ベンチマーク実行

$ cd bench
$ ./bin/bench -h # ヘルプ確認
$ ./bin/bench -remotes=127.0.0.1:8080 -output result.json

結果を見るには sudo apt install jq で jq をインストールしてから、

$ jq . < result.json

既知の不具合

  • 管理画面から新規イベントを作成する際に、ベース金額を初期値から変更した場合、金額を数値型ではなく文字列型で POST してしまう JS のバグがありました。 初期実装を確認したところ、このバグに影響を受けるのは go 実装のみでした。また、ベンチマークには影響がないことが分かっているため、JS の修正は見送りました。 なお、JS を書き換えるとベンチマークが fail しますので JS の改修はお勧めしません。
  • 変数名等で使われている、座席を意味する単語 sheets の、正しいスペルは seats です。

Main metrics

Overview
Name With Ownerisucon/isucon8-qualify
Primary LanguageJavaScript
Program languageMakefile (Language Count: 13)
Platform
License:MIT License
所有者活动
Created At2018-09-18 14:04:56
Pushed At2021-09-12 07:48:53
Last Commit At2019-12-06 16:28:56
Release Count0
用户参与
Stargazers Count158
Watchers Count13
Fork Count83
Commits Count0.9k
Has Issues Enabled
Issues Count2
Issue Open Count0
Pull Requests Count7
Pull Requests Open Count0
Pull Requests Close Count8
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private