“啊,啪!”和 ASR:Chrome 中的套接字缓冲区错误没有空间

Posted

技术标签:

【中文标题】“啊,啪!”和 ASR:Chrome 中的套接字缓冲区错误没有空间【英文标题】:"Aw, Snap!" and ASR: No room in socket buffer errors in Chrome 【发布时间】:2018-08-29 09:55:37 【问题描述】:

我有一个带有繁重 JS 脚本的 Web 应用程序(我所说的繁重是指无法在服务器端完成的大量客户端处理)。 经过大约 1 小时(不是恒定的)处理后,我收到 Chrome 的 "Aw, Snap!" 错误,我已按照https://superuser.com/questions/607563/how-to-determine-what-is-causing-chrome-to-show-the-aw-snap-dialogue 中的建议进行了调试,我注意到每次收到错误时,日志正在提示WARNING:audio_sync_reader.cc(177)] ASR: No room in socket buffer.

我坚信我的内存有点用完了,因为如果我在此错误之后打开其他选项卡,我会得到其他选项卡 “Aw,Snap!”

但是,考虑到我的 JS 脚本很长,并且抛出错误需要很长时间,我如何确定是哪段代码引发了它?

PS.:我也有很多 DOM 操作(主要是在表格上插入)

谢谢!

【问题讨论】:

我没有给你答案,但你有没有使用开发者工具面板来观察资源消耗?除此之外,分治法(阅读minimal reproducible example)的一般调试技术也适用。是的,这可能是一个漫长而乏味的过程。欢迎来到丛林;) 我在使用tone.js时也遇到了同样的情况,如果你这样做了,请查看github.com/Tonejs/Tone.js/issues/353 【参考方案1】:

不一定是某一行或一段代码。只是您的应用程序消耗了大量内存。这可能是由内存泄漏引起的,您可以通过查看调试器内存选项卡来识别它。如果没有内存泄漏,您应该过度考虑您的代码结构。

【讨论】:

【参考方案2】:

我也有类似的问题:

[0225/064309.871791:WARNING:audio_sync_reader.cc(175)] ASR: No room in socket buffer.: Broken pipe (32)

我在 Docker 容器中以无头模式运行 Chrome。上面的警告是由另一个与 Linux 的/dev/shm 共享内存空间相关的内存问题引起的。此页面对其进行了更详细的描述:

https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md#tips

Docker 只为 /dev/shm 分配 64MB。我想 Chrome 使用 /dev/shm 来存储由当前浏览器选项卡加载的图像(未压缩)。至少这可以解释为什么只有当网站包含一张或多张大图片时,Chrome 才会失败。 ASR: No room in socket buffer. 错误只是用大图像占据/dev/shm 的副作用。

使用--disable-dev-shm-usage Chrome 命令行标志解决了这个问题。

【讨论】:

以上是关于“啊,啪!”和 ASR:Chrome 中的套接字缓冲区错误没有空间的主要内容,如果未能解决你的问题,请参考以下文章

linux机制

Chrome扩展程序Secure Shell套接字访问

Chrome扩展中的Socket通信问题

连接到 WebSocket 时如何覆盖 Chrome 中的 Origin 标头?

如何在 chrome 控制台中建立网络套接字连接?

python之socket(套接字)