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

チャンネル閲覧者変化イベントの通信量が O(N^3) なので差分更新にする #2396

Open
motoki317 opened this issue May 1, 2024 · 0 comments
Labels
kind/performance パフォーマンスの問題に関するもの

Comments

@motoki317
Copy link
Member

N=チャンネルの閲覧者数、閲覧者がチャンネルを離脱・閲覧する確率は一定であるとすると、

WebSocketイベントで閲覧者全員に CHANNEL_VIEWERS_CHANGED イベントが送られ、
そのイベントのpayloadは閲覧者一覧の配列が含まれており、
閲覧者が増えれば増えるほどイベントの頻度も増える

したがってO(N^3)でサーバーの通信量、各ユーザーから見ればO(N^2)で端末の通信量が増える
100人が閲覧しており、10KBのpayloadが1秒に平均3回送られるとすると、
10,000 [B/event/person] x 8 [bits/byte] x 3 [events/s] x 100 [person] = 24,000,000 [bit/s] = 24 [Mbps]

回線が細く、他の通信もある中で、平均この値だったら、ピークもあるし普通に詰まって大変なことになる(なった)

image

毎回送っている情報が冗長すぎるので、差分更新などを検討するべき

@motoki317 motoki317 added the kind/performance パフォーマンスの問題に関するもの label May 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/performance パフォーマンスの問題に関するもの
Projects
None yet
Development

No branches or pull requests

1 participant