长安链内存占用随时间不断增高导致OOM问题
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
长安链是使用管理台的方式创建的,智能合约是C++编写的
版本是2.3.5
长安链linux中以进程的方式运行
运行一段时间后某一天不可用了,检查发现是因为被OOM
之后经过持续观察,发现内存占用随时间变高,和调用合约次数无关
使用go pprof进行内存分析
重启区块链进程后过了一个晚上,/debug/pprof/heap
top如下:
flat flat% sum% cum cum%
1983.88MB 88.35% 88.35% 1983.88MB 88.35% chainmaker.org/chainmaker-go/module/snapshot.newShard (inline)
发现这个随着时间不断增大,最终占满内存
因为是在公司测试环境,没法提供截图和pprof源文件
2025.3.1 更新:
在本地自己虚拟机上复现了一下这个情况,就是说chainmaker.org/chainmaker-go/module/snapshot.newShard (inline)这个持续不断增大,最后吃满整个内存。
我使用的是MAXBFT共识协议,我个人觉得有可能是因为这个的原因。
最后,把本地的pprof和区块链部署文件上传了。
具体的现象,操作步骤,前置条件等,尽可能描述清楚,有截图说明更佳
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
chainmaker-go 的 log/system.log & bin/panic.log file *
SDK 的 sdk.log file