google-chrome - 在 wss 安全模式下运行时,chrome 中的 websocket 性能明显较差

标签 google-chrome websocket chromium

我似乎遇到的问题表明 wss secure websockets 在 Chrome 上比 IE 和 Firefox 慢得多。我环顾四周,但找不到任何真实信息来确认其他人看到了这种行为。

总结: 我正在使用本地主机 C++ websocket 服务器进行原型(prototype)设计,以将单个二进制图像 png 帧发送到在同一台机器上打开的网页。这必须是 websockets 的安全 wss 版本。

我不能真正流式传输视频并使用视频标签,因为延迟/滞后必须最小。

潜在的限制因素之一是 websocket 连接将提供多少数据吞吐量。目前仅用于原型(prototype)制作,我使用 mongoose 作为服务器。服务器似乎不是限制因素,它似乎是 Chrome wss websocket 处理。

在我的高规范开发机器上进行的测试只是通过 websocket 发送数据。目前我没有尝试对传递的实际数据做任何事情。 客户端发送一个 wss client->server 字符串说“拉”。 服务器回复 wss server-client 1 MB 二进制 blob。 客户端用 wss 客户端-服务器字符串回复说“拉”。 服务器回复 wss server-client 1 MB 二进制 blob。 ..等等......

这是我每秒为安全和不安全的 websockets 获得的二进制帧数:

IE (v10) wss:120 ws:221

火狐 (v28) wss:65 ws:170

Chrome (v35) wss:17 ws:93

你可以看到 chrome wss 的性能与其他的相比似乎很差。我在 3 台计算机上试过这个,结果相似。我尝试了 0.1 兆字节到 100 兆字节的不同 blob 大小,这对实际数据速率吞吐量没有真正的影响。我试过禁用 Nagle 的算法。

有人对我可能遗漏的东西有任何想法吗? 任何人都可以确认 chrome wss 性能可能很差吗?

谢谢

马特


更多信息:

评论后:我启用了“#enable-websocket-experimental-implementation”,但它似乎没有什么区别。我还尝试了最新的 chrome canary 版本,但这似乎也没有什么区别。

更多信息:

在我的开发机器上使用 64 位调试服务器在我的开发机器上获得更多结果(每秒循环数)。发送“拉”到服务器,用任意二进制 1000000 字节缓冲区回复。 尝试为每个客户端使用 2 个套接字,每个都在不同的子协议(protocol)上。

IE(v10) : wss:120 ws:221 wss[2 websockets]:176

Firefox(v28) : wss:65 ws:170 wss[2 websockets]:59

Chrome(v35) wss:17 ws:93 wss[2 websockets]:18

IE 似乎使用 2 个 websockets 显着加速。 Firefox 和 Chrome 没有。


最佳答案

根据 chromium-discuss 的反馈,很多速度差异似乎是由于客户端和服务器之间协商的密码造成的。

为了确认这一点,我尝试将服务器密码硬编码为 SSL_CTX_set_cipher_list(ctx,"AES128-SHA");那么帧率如下:

Chrome 版本 35.0.1916.153 m:49.75 Chrome 版本 38.0.2068.0 金丝雀版(64 位):53.15 Firefox 版本 30.0:61.8 IE 30.0:68.21

尽管存在一些差异,但所有浏览器的速度现在都在同一个球场。在这种情况下,我控制着服务器并将能够决定合适的密码列表。

关于google-chrome - 在 wss 安全模式下运行时,chrome 中的 websocket 性能明显较差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24364261/

相关文章:

html - 什么是<<伪:before>></<pseudo:before>> and is it useful to me?

google-chrome - Chrome/Chromium 中的奇怪对角线(错误?)

android - Android WebView 中的 WebSocket

google-app-engine - 从 ManagedVM 中公开多个端口

Javascript - 如何停止缩放、多点触控输入攻击?

css - Chrome CSS 错误 : image elements not showing up

google-chrome - 音频下载链接在 Firefox 中有效,但在 Chrome 中流式传输

iis - IIS 8中的Websockets反向代理

Javascript 对象成员函数 : "Uncaught SyntaxError: Unexpected token ," (Chromium)

javascript - Electron 结合 Node.js 和 Chromium 上下文意味着什么?