GithubHelp home page GithubHelp logo

showwin / ishocon2 Goto Github PK

View Code? Open in Web Editor NEW
36.0 36.0 26.0 58.49 MB

iikanjina showwin contest 2nd (like ISUCON)

Ruby 45.10% HTML 10.49% Go 15.98% Shell 1.17% Python 7.43% PHP 6.17% JavaScript 3.39% Crystal 3.13% Dockerfile 3.40% EJS 2.60% Makefile 1.14%

ishocon2's People

Contributors

denzow avatar dependabot[bot] avatar goryudyuma avatar mickamy avatar showwin 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ishocon2's Issues

ランキング表示ポータルサイトの作成

ベンチマーク実行後に(任意に)自動でスコアが反映されるポータルサイトの作成

時系列のグラフではなくて、ランキングみたいなのが良さそう
benchmark --ranking showwin みたいに ranking オプションでチーム名を指定してスコア自動送信ができる。

ベンチマーカーをhttp/2に対応させたい

せっかくSSL使っているんだし、http/2で爆速にしてみたい。

  1. http1.1のみを使って、Clientを毎回生成(現状)
  2. http2が使えるなら使うようにして、Clientを毎回生成
    #9
  3. http2が使えるなら、Clientを全部使い回す
    https://qiita.com/catatsuy/items/bf3a1a5ffde1f5802d5a で述べられているように、ISUCONらしくはなくなる。全ての投票者が同じ端末からアクセスしていることになるから。
  4. http2が使えるなら、Clientを一部使い回す
    Clientをあらかじめ100個ほど生成し、requestの時にこの中からランダムで選ぶ、とか。

現状の点数や、コンテストとしての方針が大幅に変わる恐れがあるので、慎重にお願いします。

Apple Silicon 対応

課題と解決方法

  • 現在の app-base および benchmarker のイメージが、アーキテクチャの違いから、apple silicon mac で動かした場合にパフォーマンスが悪化する恐れがある
  • arch が amd64 だった場合に arm64v8/ubuntu をベースイメージとすることで、パフォーマンスの改善が見込まれる
  • その場合にはローカルで app-base と benchmarker をビルド可能にする必要がある

懸念点

  • private isucon という観点から言うと、イメージを変えるのは良くない可能性がある

ベンチマーカーの http.Client に TLS handshake のタイムアウトが設定されていないことでベンチマークが hang することがある

benchmarker では http.Transport を作る際に TLSClientConfig のみ設定していますが、

tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}

この状態だと https://pkg.go.dev/net/http?tab=doc#Transport にあるように TLSHandshakeTimeout がゼロ値 = タイムアウトなしとなり、サーバー側が TLS handshake で詰まっているときに待ち続けてしまうようです。

高負荷のためうまく接続できないこと自体は競技者側の責任としてよいでしょうが、ベンチマーカーがそこで hang してしまうのは計測上問題があるのでなんらかのタイムアウトを設けるのが望ましいように思います。

通常の net/http のデフォルト挙動から変更する意図がなければ、 astj@8bc05ca (Transport#Clone を使ってしまったのでおそらく >= Go 1.13 でしか動かないです) のように http.DefaultTransport の設定を clone すると穏当なタイムアウトが設定できるかと思います。
もちろん、 https://github.com/golang/go/blob/go1.15.1/src/net/http/transport.go#L42-L54 と同じ値を直接指定しても良くなるだろうと思っています。

ベンチマーカーAMIの実装が古い

https://github.com/showwin/ISHOCON2/blob/master/README.md の,
ベンチマーカーAMI: ami-78b66107 を用意してくださっているのは大変ありがたいのですが,
ami-78b66107 のベンチマーカーは実装が古い段階のものであり,50000点くらいまでしか出ない(TLSハンドシェイクのため)ので,isuconの練習をする方が困るかもしれません.

そのため,ドキュメントのどこかに注記しておくか, ami を更新した方がisuconの練習をする方にむけては助かるかもしれません.

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.