当前位置: 首页 > 知识库问答 >
问题:

如何使SocketIO性能更好?

翟高明
2023-03-14

我们在Etherpad中非常广泛地使用了SocketIO(从很早开始),我们非常感谢团队为提供如此有用的东西所做的所有努力:)

Etherpad是一个nodejs项目。

我对SocketIO的问题可能是由于我的配置错误或理解错误,但经过相当多的测试工具生成,调整内存设置等,我们仍然得到一个令人沮丧的低最大消息数每秒达到10K大关。

Etherpad最新模拟负载测试

在线阅读,看起来切换到ws的性能会更好,但我看不出在我们的场景中如何会出现这种情况,我们的瓶颈不是协商(最终是websockets),而是服务器每秒处理的消息。

我不愿意尝试其他软件包,所以我想我来这里征求一些见解或东西,看看我们是否可以提高性能,嗯,很多…通常的节点技巧(访问更多硬件[RAM/CPU])会有所帮助,但感觉我们得到的收益仍然很小,而不是在其他模块基准上看到的巨大数字。

这个问题的一个梦想结果是,有人看着Etherpad代码,告诉我为什么我是个白痴,希望我们能让Etherpad进入竞争激烈的每秒100k的变化,但我可能会对其他模块视而不见,所以如果有人有与ws类似的基准测试相矛盾的基准测试,我会洗耳恭听。

我觉得我应该补充一下,我们测试了一下,看看是否是内部以太网逻辑造成的,而不是,实际上是通信层导致了操作转换算法的瓶颈,我们有99.95%的把握...

在这个问题上扔更多的硬件不是解决办法,任何反向代理/传递问题的方法也不是。

共有1个答案

阳建弼
2023-03-14

如果你对“问题”在哪里视而不见,你就没有很多选择。您可能正在寻找一个不存在的“配置错误”。这可能会浪费你很多时间和金钱,最后你可能还是要换。

人们发现,成熟与接受“不知道”有很大关系。

重写与负载测试相关的代码片段,以测试使用例如uWebSockets是否有助于推动Bondary。有多个来源指出uWebSockets服务器要快得多。我打赌它不会花那么多时间,你会得到非常重要的信息,你需要帮助你决定是否值得切换。新的web技术正以极快的速度向前发展,如果你想为产品的未来做出正确的选择,你必须愿意尝试它。亚历克斯·胡特曼写了一篇文章

如何-μwebsockets-实现-高效-pub-sub

在那里他加入了交换,并解释了为什么值得一试。

 类似资料:
  • 背景 我正在将Unity应用程序连接到SocketIO应用程序 Unity正在使用SocketIO插件(仅使用websockets,不使用polling/xhr) 为了从Unity连接到我的websocket,我使用。如果我通过浏览器点击该链接,我会看到以下内容: 此时,我使用,但随后我的应用程序停止工作。 问题 如何确保websockets可用于NodeJS+SocketIO? 代码 app.j

  • 我从webflux开始,我想知道以下哪项性能更好,因为它们看起来都很像我 你能帮我弄清楚哪一个最好,为什么?谢谢

  • 我定义了两个HTTP GET API /test-mono和 /test-no-mono,除了 /test-mono使用Mono返回类型之外,两者都是完全相同的。HelloControlllerSpec使用100个线程池测试两个API 1000次, /test-no-mono需要45秒,但 /test-mono需要4分钟以上,为什么?看起来 /test-no-mono的默认并发配置比 /test-

  • python-socketio 是 Socket.IO 服务器的 Python 实现。 示例代码: import socketioimport eventletimport eventlet.wsgifrom flask import Flask, render_templatesio = socketio.Server()app = Flask(__name__)@app.route('/')d

  • Flask-SocketIO Socket.IO integration for Flask applications. Sponsors The following organizations are funding this project: Socket.IO Add your company here! Many individual sponsors also support this

  • spray-socketio 是 spray 的扩展,实现对 Socket.io 的支持。