我有一个带有巨大聊天室的聊天应用程序(15'000 个用户连接到一个房间)。只有少数人有写的权利,所以理论上应该不会有很大的负担。我注意到存在性能问题:当仅发送一条消息时,服务器 CPU 负载飙升至 30%-50%,并且消息传递缓慢(如果写入多条消息,可能会晚 1 秒或更糟)我分析了具有临床火焰的性能。我发现这段代码是问题所在:
socket.to("room1").emit(/* ... */);它将send()在engine.io 和 库clearBuffer中触发ws。
有人知道我是否做错了什么以及如何优化性能?
我必须在RXJS Observable中转换对象属性。使用“地图”运算符可以工作。当我两次订阅同一个可观察对象时,将发生问题:属性被两次转换
我尝试使用“共享”运算符和多种变体,但似乎无济于事
const source = of(
{ id: 1, name: 'John' },
);
const personObservable = source.pipe(
map(person => {
person.name = person.name + '_test'; return person;
}),
);
personObservable.subscribe(
person => console.log('first: ', person)
);
personObservable.subscribe(
person => console.log('second: ', person)
);
Run Code Online (Sandbox Code Playgroud)
first: John_test
second: John_test
Run Code Online (Sandbox Code Playgroud)
first: John_test
second: John_test_test
Run Code Online (Sandbox Code Playgroud) javascript ×2
angular ×1
node.js ×1
observable ×1
performance ×1
rxjs ×1
socket.io ×1
websocket ×1