Rust 製 Nostr リレー nostrfy のバージョン v0.1.12 をリリースしたし、秒間何件配信できるのかを実測してみたンゴ
DRANK

どうも僕です。Nostr ばかりですが...。僕は nostrfy という Nostr リレーを Rust で書いています。今回は理屈を並べるだけではなく、リポジトリに同梱してある WebSocket 負荷クライアントを release ビルドのリレーに叩きつけて、出た数字をそのまま書きます。そのうえで、この数字を支えているコードもお見せします。Nostr はプロトコルであり、すなわち API でもあり、割とシビアなスペック要求Nostr はすべて WebSocket でできています。クライアントがソケットを繋いで、EVENT や REQ、CLOSE、AUTH を送り、ライブ配信を購読し、negentropy で差分同期します。つまりリレーの良し悪しは、最終的にはソケット層で決まります。見られる数字は大きく2つです。毎秒何件受け付けられるかと、毎秒何件配信できて、そのとき何件落とすか。先に結果計測環境は 8 vCPU の Intel i5-8265U(1.60GHz)、メモリ 7.4GiB、Fedora の 64bit Linux です。cargo build --release したリレーに対して、すべて loopback の WebSocket で計測しました。TLS なし、プロキシなしです。設定はほぼ既定値のままですが、fan-out のときだけ per-IP 上限を 128 に上げています。シナリオ負荷結果…

zenn.dev
Related Topics: Rust
1 comments