hyj1991/easy-monitor

Mac OS 内存监测报错

suutaku opened this issue · 14 comments

你好,第一次使用easy-monitor
环境

  Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64

选择内存监测
报错如下

[Easy-Monitor: embrace <76897>] common.socket->onData error: TypeError: Cannot read property 'profilerP' of undefined
    at _start (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/embrace/controller/tcp.profiler.js:48:52)
    at _start.next (<anonymous>)
    at onFulfilled (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/node_modules/co/index.js:65:19)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
[Easy-Monitor: dashboard <76900>] common.socket->onData error: TypeError: Cannot read property 'composeKey' of undefined
    at _stat (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/dashboard/controller/tcp/tcp.stat.js:34:41)
    at _stat.next (<anonymous>)
    at onFulfilled (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/node_modules/co/index.js:65:19)
    at /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/node_modules/co/index.js:54:5
    at new Promise (<anonymous>)
    at co (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/node_modules/co/index.js:50:10)
    at controller.<computed> (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/dashboard/controller/tcp/tcp.stat.js:20:16)
    at /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/common/common.socket.js:102:67
    at Array.forEach (<anonymous>)
    at Object.onData (/Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/common/common.socket.js:93:20)
[Easy-Monitor: dashboard <76900>] http.axios.profiler error: TypeError: Cannot read property 'composeKey' of undefined
[Easy-Monitor: dashboard <76900>] http.axios.profiler error: TypeError: Cannot read property 'composeKey' of undefined
[Easy-Monitor: dashboard <76900>] http.axios.detail error: TypeError: Cannot read property 'composeKey' of undefined

是缺少某个包导致的吗?

v8-profiler-node8

收到!

尝试过

 node i v8-profiler-node8
node i v8-profiler-node8 -g
  TOUCH Release/obj.target/action_after_build.stamp
+ v8-profiler-node8@6.1.1
added 68 packages from 36 contributors in 22.634s

还是不能运行。
我的node版本是

v12.10.0

你启动的时候报了什么错误么

[Easy-Monitor] <common.profiler.js> load error: Error: Cannot find module './build/profiler/v6.1.1/node-v73-darwin-x64/profiler.node'
Require stack:
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/node_modules/v8-profiler-node8/v8-profiler.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/common/common.profiler.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/common/common.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/dispatch.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/index.js
- /Users/john/Documents/GitHub/FursealClient/main.js
- /Users/john/Documents/GitHub/Furseal/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js
-
[Easy-Monitor] <common.profiler.js> load error: Error: Cannot find module './build/profiler/v6.1.1/node-v73-darwin-x64/profiler.node'
Require stack:
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/node_modules/v8-profiler-node8/v8-profiler.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/common/common.profiler.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/common/common.js
- /Users/john/Documents/GitHub/Furseal/node_modules/easy-monitor/src_logic/dashboard/_fork.js

哦,是没有可执行文件

rm -rf node_modules/v8-profiler-node8 然后再重新安装,这个就是 v8-profiler-node8 这个包没有成功安装。

尝试了重新安装,
确认了下:

john@Station-431017:Fur$ ls -la node_modules/v8-profiler-node8/build/profiler/v6.1.1/node-v72-darwin-x64/profiler.node
-rwxr-xr-x  1 john  staff  67428 Nov 14 18:00 node_modules/v8-profiler-node8/build/profiler/v6.1.1/node-v72-darwin-x64/profiler.node

不过还是一样的报找不到profiler.node的错误

补充一下,我不是直接使用node命令来运行的。工程是一个Electron app,使用npm start 命令打开的。

你看你的报错信息,缺少的是 node-v73-darwin-x64,你安装后只有 node-v72-darwin-x64,这里的 v72 v73 是 node.js 内部的一个 ABI 版本号,显然原因是你启动进程使用的 node.js 版本和安装 v8-profiler-node8 这个包的 node 版本不一致

这个就麻烦了,重新安装编译会有其他问题。我试试用node直接脱离electron来运行。
谢谢。

但是我看有一个 issue #92 是说可以在 electron 下运行的,electron 确实会维护一个单独的 binding 版本,你可以尝试下把 v72 改成 v73,能不能运行。

v8-profiler-node8 这个包理论上都是纯粹的 v8 api 封装了下,只要 v8 版本一致应该是 abi 兼容的

好的,我尝试一下。
现在直接写了一个简单的main,已经能够分析了。electron部分的UI性能已经使用inspect调优过了,问题应该不大。后端的node.js代码我就先用这个临时的解决方案。
感谢你的支持。

OK,那我先关闭这个 issue 了

Ps,正在搞 Easy-Monitor 3.0,会更强大更全面,有兴趣可以关注下 https://github.com/hyj1991/xprofiler

OK,那我先关闭这个 issue 了

Ps,正在搞 Easy-Monitor 3.0,会更强大更全面,有兴趣可以关注下 https://github.com/hyj1991/xprofiler

关注学习中。
js我刚上手。