CNode

NodeJs ES6 Proxy对象导致CPU100% 3分钟 假死

问答
Iipengyo发布于8 年前最后回复8 年前6 回复4413 浏览0 收藏
日志 序列化 输出一个 Proxy对象

image.png

其中的 get 方法 就是如下 这个 Proxy handler 的 get

image.png

请有经验的大大 帮忙瞧瞧呢。。。我使用这个 Proxy对象代理 是为了标记 每一次对象属性的更改操作 达到数据库最小化变化操作。

查看回复

回复 (6)

Z
zhoumingque#1·8 年前

你打印下property,就明白了

Z
zy445566#2·8 年前

感觉这里有问题的也就是34到38行这里。 就是这里又偏偏使用stringify,这个方法就会遍历全部的值,导致取每个属性都走handle里面的get方法. 数据一大,相当于构造了个大递归。但如果能卡3分钟,如果是这个原因,数据要多大

I
ipengyo#4·8 年前
引用 zhoumingque你打印下property,就明白了

@zhoumingque 嗯嗯 明白什么。。。递归吗?

Z
zy445566#5·8 年前
引用 ipengyo@zy445566 我也估计是这个原因 但是这个东西不定时的触发,可能一天就触发个一次,而且本地测试模拟 都没有触发成功。。。

@ipengyo 那还是最好确认是不是Proxy导致,之前有人就是因为正则表达式回溯导致和你表现很像的情况

H
hyj1991#6·8 年前

你可以 debug 进去退出后,再做 cpu profile,貌似死循环发生时直接做 cpu profile 会丢失一些运行时调用栈

参与回复
登录后即可参与回复。登录