Giter VIP home page Giter VIP logo

isucon10-qualify's Introduction

isucon10-qualify

ディレクトリ構成

.
├── bench           # ベンチマーカー
├── initial-data    # 初期データの生成
├── provisioning    # セットアップ用
└── webapp          # 各言語の参考実装

問題の起動方法

  1. initial-data で初期データを生成する
  2. webapp で Docker を用いて問題サーバーを立ち上げる
  3. bench で問題サーバーへのベンチマークを実行する

実際のコマンド例については、各ディレクトリの README を参照してください。

使用データの取得元

ISUCON10 予選のインフラ構成について

  • 問題用 (3台)
    • CPU: 1 Core (AMD EPYC 7352)
    • Memory: 2 GiB
    • IO throughput: 100 Mbps
    • IOPS limit: 200 (Read / Write)
    • Interface: 1 Gbps
  • ベンチマーカ用 (1台)
    • CPU: 1 Core (AMD EPYC 7352)
    • Memory: 16 GiB
    • IO throughput: 100 Mbps
    • IOPS limit: 200 (Read / Write)
    • Interface: 100 Mbps

Links

isucon10-qualify's People

Contributors

eagletmt avatar goryudyuma avatar hachi-eiji avatar hatobus avatar hoto17296 avatar int-tt avatar itkq avatar kfly8 avatar kobutomo avatar mikiya771 avatar orisano avatar progfay avatar tamakiii avatar whywaita avatar yosuke-furukawa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isucon10-qualify's Issues

[webapp] 物件の資料請求の実装が空

  • SQL に物件が存在するか問い合わせる
  • 本来ならメールを送る処理があることをコメントで入れておく
  • 物件の資料請求された回数を SQL に保存する

[provisioning] 不要なファイルを削除

  • ~/isucon10-qualify/Makefile
  • ~/isucon10-qualify/cloudbuild.yaml
  • ~/isucon10-qualify/webapp/kataribe.toml
  • ~/isucon10-qualify/webapp/logs
  • ~/isucon10-qualify/webapp/nginx
  • ~/isucon10-qualify/webapp/frontend

[bench] GET /api/chair/0、GET /api/estate/0 の Snapshot が verify 時に選ばれると不正なレスポンス扱いになる

#121 でのバグだと思うんですが、verify のフェーズで rand.Intn() によって initial-data/result/verification_data/*_detail/0.json が選択されると正しいステータスコードは 404 であるため「レスポンスの内容が不正です」になってしまっています。

diff --git a/bench/scenario/verifyWithSnapshot.go b/bench/scenario/verifyWithSnapshot.go
index 7384c59..0b1ca82 100644
--- a/bench/scenario/verifyWithSnapshot.go
+++ b/bench/scenario/verifyWithSnapshot.go
@@ -459,7 +459,7 @@ func verifyWithSnapshot(ctx context.Context, c *client.Client, snapshotsParentsD
        } else {
                for i := 0; i < NumOfVerifyChairDetail; i++ {
                        wg.Add(1)
-                       r := rand.Intn(len(snapshots))
+                       r := 0
                        go func(filePath string) {
                                err := verifyChairDetail(ctx, c, filePath)
                                if err != nil {

みたいにすると webapp/go に対するベンチでも100%再現するようになります。

[bench] 最終的な実行結果を保存できるようにしたい

現状標準出力に出しているが、証跡を残すために、実行結果をファイル名を指定してファイル出力できるようにしておきたい。
求める内容は2種類で、1つはErrの情報が全て乗っていること、もう一つは競技者に見せる結果と同じデータが入っていること。

[仕様相談] こだわり検索の想定解が見当たらない

問題

こだわり条件検索を高速化する手段がない

うまくいかない想定解(いずれも,ジェイウォーク自体の解決後を想定する)

それぞれの単一フィーチャーごとに,view countのパーシャルインデックスをはる
それぞれの単一フィーチャーごとの,それが存在するサブテーブルを作っておく

うまくいかない理由

フィーチャーが増えるごとに,検索へのヒット数が減るという前提があるが,現状はフィーチャーの数を1-10の一様分布で決めている
ゆえに,検索条件が増えていってもかなりの数が検索結果として残ってしまい,インデックスが聞かない状態のOFFSETを強要され死んでしまう.

一様分布にしているコーど

features_length = random.randint(0, len(CHAIR_FEATURE_LIST) - 1)

改善案

上記のコードを変更して,イスがもつフィーチャーの種類数を少ない方に偏らせることが考えられる

rustのアプリケーションのビルドが失敗し、プロビジョニングに失敗する

コードが作成されたときとrustのstableバージョンが異なるため、Rustアプリケーションに含まれる lexical-core のビルドが失敗します。

結果として、 ansible-playbook を用いたサーバの構築が失敗します。

workaround

以下のコードを変更することにより、ansible-playbookが通ることのみを確認していますが、当方がrustに詳しくないため、アプリケーションが意図した動作をするかの確認ができていません。

/home/isucon/.cargo/bin/rustup default 1.46.0

command: /home/isucon/.cargo/bin/rustup update stable

もしくは、allinone.yamlcompetitor.yaml の対象のroleをコメントアウトすることで回避することが出来ます。

関連

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.