Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ベンチマークツール #1370

Open
syuilo opened this issue Apr 2, 2018 · 26 comments
Open

ベンチマークツール #1370

syuilo opened this issue Apr 2, 2018 · 26 comments
Assignees
Labels
🛠️Dev Development of Misskey itself 🔥high priority

Comments

@syuilo
Copy link
Member

syuilo commented Apr 2, 2018

ベンチマークや大量のサンプルデータの生成ができるツールが欲しい

Purpose

  • 開発の効率化、クエリのパフォーマンス調査
  • ローカル環境で大量のアクティブユーザーがいる状態を再現したい
  • 「CPUが⚪︎⚪︎コアでメモリが⚪︎⚪︎GBならアクティブユーザー⚪︎⚪︎人程度まで耐えられます」みたいな指標を出せるようにしたい
  • GitHub Actions上で動かして、PRの前後でどれくらいパフォーマンスが変化したか比較できるようにしたい(nice to have)
@syuilo syuilo added this to [CI] TODO Dec 24, 2023
@syuilo syuilo moved this to Todo in [CI] TODO Dec 24, 2023
@samunohito samunohito added the 🛠️Dev Development of Misskey itself label Dec 24, 2023
@samunohito
Copy link
Member

samunohito commented Dec 24, 2023

構想

  • NODE_ENV === developmentの時にだけ起動するデバッグ用エンドポイントとサービスを用意(productionのときは404になる。Moduleとして切り離した方が安全か?)
  • デバッグ用エンドポイントは以下の機能を備える
    • ユーザ作成、ノート作成なエンドポイントをそれぞれ用意(ほかにも必要であればアクションごとに増やす)
    • パラメータを取る。何も設定しなければランダム値でデータを作成するし、任意のパラメータに固定したいときはそのパラメータを差し込めるようにする
    • 作成したランダム値のデータをJSONにしてレスポンスで返す(使いまわしが出来るようにする)
    • JSONをパラメータに突っ込めばそれと同じ値を作り出す(足りない部分はランダム値で保管)
    • dry-run対応(JSONだけ作りたいとき用)
  • デバッグ用エンドポイントへのリクエストをラップするスクリプトの用意(CI用。中でlocalhostめがけてHTTPリクエストを想定)

@samunohito
Copy link
Member

バックエンド組み込みで考えてたけど、いっそのこと独立させてHTTP経由で流し込むような作りのほうがより安全か…?(トークンいるけど)

乞うご意見

@samunohito
Copy link
Member

(スロークエリの調査およびチューニングするにあたり、大量データが欲しくなったので機運が高まっている)

本体に(もっと言うとこのリポジトリにも)無くてもいい気がするので、別で作ったほうが良さそうに思えました。
リポジトリが更に大きくなるし、調査の時のノイズにもなりうるので…

このissueには何かそれっぽいのが出来たらリンク貼ります。

@syuilo
Copy link
Member Author

syuilo commented Sep 29, 2024

組み込みよりも独立したツールとしてあった方が良さそう

@fruitriin
Copy link
Contributor

RubyでいうFactoryBot的なやつあったら便利だよねえ
(FactoryBotはユニットテストでよく使われるけど、ユニットテストでしか使えないわけじゃないので)
TypeORMにも似たようなのあるかな、あったらいいな

あとDevelopでDBを初期化(seed)するときに時にある程度テストで使いそうなデータをごそっと用意するのはあると便利だったなあ

@syuilo
Copy link
Member Author

syuilo commented Sep 29, 2024

APIのパフォーマンスも調べたいからDBに直接投入するよりe2e的に外部botのような形で動くものがひとまず欲しいわね

@syuilo
Copy link
Member Author

syuilo commented Nov 28, 2024

Misskeyのベンチマークを行うためにも至急必要になってきた

@Sayamame-beans
Copy link
Member

@samunohito さんが作ってたやつとか…?

@samunohito
Copy link
Member

(人に渡せる状態じゃないので整理します)

@samunohito samunohito self-assigned this Dec 1, 2024
@syuilo syuilo changed the title ダミーデータ生成機能 ベンチマークツール Dec 10, 2024
@syuilo
Copy link
Member Author

syuilo commented Dec 10, 2024

説明をより詳細にupdate

@syuilo
Copy link
Member Author

syuilo commented Dec 11, 2024

引き継ごうかしら

@syuilo
Copy link
Member Author

syuilo commented Dec 12, 2024

どのような実装にすると良いのかがわからない

@samunohito
Copy link
Member

(土日で表に出せるくらいにはするからもうちょっと待ってほしい)

@syuilo syuilo pinned this issue Dec 14, 2024
@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

やってる
https://github.com/syuilo/mi-benchmarker

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

リクエストの送信で ENOBUFS なるエラーが出てしまうわね

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

PCのメモリは全然余裕そうなんだけど

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

TASUKETE

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

そもそもENOBUFSについての情報が少ない

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

こまこまのこまり

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

メモリが足りない場合のエラーっぽい

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

メモリ容量は全く問題ないから謎

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

これが関係してそうと思ったけど、使ってるのgotだから同等の指定ができるか不明
https://stackoverflow.com/questions/10603860/very-simple-node-js-client-throws-error-enobufs-after-many-http-requests

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

ヌァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァンンンンオオオオンンオンオンオンオンンンンンンンンン゛ン゛!!!!!!!!!!!!!!!!

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

これが関係してそうと思ったけど、使ってるのgotだから同等の指定ができるか不明 https://stackoverflow.com/questions/10603860/very-simple-node-js-client-throws-error-enobufs-after-many-http-requests

agent オプション自体はあるけど、

agent: {
				http: false,
				https: false,
			}

とかにすると
TypeError: Expected values which are Object or undefined. Received values of type boolean.
って怒られる

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

有識者を募集しております

@syuilo
Copy link
Member Author

syuilo commented Dec 15, 2024

とりあえずアカウント自体はおさむツール使って用意するようにするか

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛠️Dev Development of Misskey itself 🔥high priority
Projects
Status: Todo
Development

No branches or pull requests

4 participants