【发布时间】:2020-03-29 17:20:51
【问题描述】:
我的应用是棋盘游戏Settlers of Catan的网页版。
我使用node --prof app.js 来分析应用程序,并使用node --prof-process ISOLATE_LOG_FILE > processed.txt 将它们转换为已处理的文件。
我确实收到了很多 Code move event for unknown code 事件:https://prnt.sc/q69ugk
最后我留下了一个文件,如下所示:
Statistical profiling result from isolate-0x3df60c0-v8.log, (13113 ticks, 192 unaccounted, 0 excluded).
- 在 node.js 的上下文中这个 epoll_pwait 是什么?
- 为什么它使用了我的应用程序的 60%?
- 我该怎么办?
【问题讨论】:
-
你做这个了吗?我面临同样的问题......我也有一个非常高的
epoll_pwait(没有你的百分比那么高,但仍然很高)并且无法弄清楚它是否值得关注(主要是如果它代表一个“等待”是否阻塞)。 -
不 :( 我修复了一些其他有用的东西
-
epoll_wait 根据您的应用程序处理任何类型的 IO。操作成本高,但上面没有说明。通常这是例如HTTP 或 FS 操作,通常也是应用程序的不当行为。 SocketServer.js 文件很可能没有实现它自己的超时。这是应用程序代码中的典型问题。因此,我会接受下面的答案。也许您的应用程序代码存在一个非常特殊的问题。在那种情况下,我会把它贴在这里。
-
另请注意:各自的实现来自 libuv。对应的 C 代码只有一个相关位置,提示超时。