zhangyuang / ssr

A most advanced ssr framework support React17/React18/Vue2/Vue3 on Earth that implemented serverless-side render specification.
http://doc.ssr-fc.com/
MIT License
2.61k stars 284 forks source link

[bug]ssr-core-vue3内存泄露 #224

Closed JanusSpark closed 2 years ago

JanusSpark commented 2 years ago

版本"ssr-core-vue3": "^6.2.13"

发布后遇到线上直出页面回退回csr渲染的情况,司内机器监控未见异常,内存也未溢出,重启后恢复,怀疑还是和内存溢出相关

使用clinic+autocannon进行本地压测排查

企业微信截图_5a94bdd1-2d20-46a2-a751-8c733a0c57a6

可以看出内存的增长有去无回 使用clinic heapprofiler看下堆栈

企业微信截图_b52c6671-59b4-46e5-bc40-fff9efc3b0ff

容易看出 问题主要在 ssr-core-vue3 的commonRender的require使用 编译后的js代码

企业微信截图_fdeaa30f-bdc2-4ed9-bd2a-3c91071cacf2

这里的require最后没有被释放

企业微信截图_596926f5-fe03-4f1b-96c8-039f826748b8

简单修改一下 新的压测结果

企业微信截图_855db9ca-f657-4dbe-8265-19716bbf2290

所以应该是这里每次调用commonRender之后重复require文件没有释放导致内存溢出上面的viteRender应该也会有一样类似的问题,具体的修改逻辑这里就不继续写了,比如commonRenderServerRender应该还是要按照chunkName来做一个map也好还是其他逻辑也罢,应该不能是单独一个文件的结果

zhangyuang commented 2 years ago

给复现基础库问题你用默认的example随随便便用ab压一下就知道了,这里没发现问题

JanusSpark commented 2 years ago

这里命令跑错了- -直接用node执行dist目录下的js的时候没带 NODE_ENV=production ,目前看这里没问题