记AELF区块链网络的一次内存持续增长问题排查

记AELF区块链网络的一次内存持续增长问题排查

背景:测试同学运行AElf单节点过程中,发现节点突然不再出块,经查看日志发现 Worker(交易执行进程) 全部掉线,无法继续执行交易,从而导致节点挂掉。

aelf的GitHub链接:https://github.com/AElfProject/AElf

初步定位问题:出现这个问题很奇怪,因为节点和所有 Worker 在同一台服务器上,网络通信应该不会有问题,再者发现,主节点、所有 Woker 和 Lighthouse 几乎在同一时间全部掉线。然后继续排查,通过 zabbix监控找到了问题,服务器在一个时间点内存几乎被耗尽,通过观察时间,发现与节点出现异常时间吻合。

复现问题:我们重点对内存使用进行测试。测试发现,随着节点长时间运行,进程占用服务器内存在不断增加,尤其在持续发了大量交易后,内存使用增长明显,并且停止发交易后,内存也并不会下降。

下面是具体的复现步骤:
首先介绍服务环境,我们使用Ubuntu 16.04.5 LTS,dotnet core 版本为2.1.402

节点刚开始运行的情况:内存使用大约为90M

然后对节点持续发大量交易,我们可以通过监控看到节点交易池堆积大量交易并不断在执行


持续一段时间后,内存占用已经达到1G


此时停止发交易,等待交易执行,我们通过监控看到交易池中的交易已都被执行。


等待一段时间后,此时我们继续观察内存占用,发现内存使用还是不会减少,一直保持1G 的水平

分析问题:

接下来我们使用lldb分析我们的节点。

首先在服务器上安装 lldb

sudo apt-get install lldb

找到本机ibsosplugin.so位置

find /usr -name libsosplugin.so

启动 lldb并附加到进程

sudo lldb –p 13067

加载libsosplugin.so

plugin load /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.4/libsosplugin.so

setclrpath /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.4/

首先分析下对象

dumpheap -stat

我们可以看到有大量的以下对象

AElf.Kernel.TransactionHolder

System.String

AElf.Common.Address

System.Collections.Concurrent.ConcurrentDictionary`2+Node[[AElf.Common.Hash,AElf.Common],[AElf.Kernel.TransactionHolder,AElf.Kernel.TxHub]]

AElf.Kernel.Transaction

AElf.Common.Hash

Google.Protobuf.ByteString

System.Byte[]

我们再看下大于1024字节对象

可以看有4个对象同类型的对象比较大

System.Collections.Concurrent.ConcurrentDictionary`2+Node[[AElf.Common.Hash, AElf.Common],[AElf.Kernel.TransactionHolder, AElf.Kernel.TxHub]][]

再进一步查看MethodTable对应的对象

可以看到有8个对象,其中4个较大,挑选其中一个查看对象信息,发现里面存储了573437个值。


基于以上分析结果,排查对应源代码,定位到类:AElf.Kernel.TxHub。该类主要作用是存储交易池交易数据。该类包含8个ConcurrentDictionary<Hash, TransactionHolder>用于存储交易数据,而TransactionHolder类中有存储了Hash、Transaction 等类型,与上面内存分析的结果吻合。再继续看内部逻辑,发现所有交易进入交易池后一直存储在TxHub中,不再进行释放。到此为止基本上定位问题所在。

待问题修复后重复上面步骤进行验证,效果比较明显,待交易池交易执行完毕后,内存占用有明显下降,最终内存占用如下

继续看下内存中对象的情况,可以看到对象总数也有了明显的下降。


但是仍存在内存少量增长的现象,并且有大对象驻留内存的情况,此问题会进一步跟进分析。

原文地址:https://blog.51cto.com/14239384/2366025

时间: 2024-10-06 12:54:09

记AELF区块链网络的一次内存持续增长问题排查的相关文章

币圈Telegram ICO筹8.5亿美元, 拟建第三代区块链网络, 目标以太坊

据国外媒体报道,币圈核心即时通讯工具Telegram本周(至2月17日当周)稍早递交给美国证券交易委员会(SEC)的一份文件显示,该公司已经通过ICO筹集到8.5亿美元资金,用于开发TON开源网络.研发和维护Telegram Messenger以及其他目的. 一.关于Telegram Telegram是一款开源且跨平台的IM工具(类似 Whatsapp.Messenger.微信),Telegram也叫电报,于2013年推出,目前拥有1.8亿用户,每天发送700亿条信息.被称为"俄罗斯版'微信'&

Seele元一正式公开第二部黄皮书“区块链网络中消息传播的一种加速方法”

9月5日,Seele元一公开发表第二部黄皮书"区块链网络中消息传播的一种加速方法".当晚,Seele首席科学家毕伟博士在台湾大学Seele全球名校行首站活动中,与台湾大学资讯工程系廖世伟教授.台大学生及校友面对面解读黄皮书内容.继8月10日发表"多重椭圆曲线的数字签名方法"后,为产业而来的Seele元一不断落实系列黄皮书发表计划.传统区块链网络中,扩展区块链的关键问题之一,就是最小化获胜区块传播与次轮竞争启动间的时间间隔.本次公布的第二部黄皮书中对此提出一种新的解决

区块链网络成为DDOS威胁的重灾区.

随着大数据时代的快速发展,网络犯罪分子利用大数据技术日渐猖狂,网络安全问题因此频频发生.其中DDoS***,从开始针对网站,游戏进行大面积***,获取巨大利益后.现将目标已转移到区块链网络中,让其成为DDoS***的重灾区. 近段时间,墨者安全遇见很多的客户说他们的业务遭遇ddos***,以此来威胁勒索,让他们交保障费,不交就让网站服务不了,打不开.大家都知道DDOS***主要是利用大量僵尸网络或者肉鸡堵塞目标的网络带宽,或占用服务器的连接资源池来达到拒绝服务的.而针对区块链网络犯罪分子演变出了

侧链:区块链技术革命时代的跨链创新,价值网络实现的关键

自中本聪2009年推出比特币以来,数以百计的竞争币被开发出来.以太坊.比特股等类比特币网络的出现,已经对比特币网络的权威带来了极大的挑战.如何提升比特币网络的竞争力,激活比特币网络的创新,成了区块链信徒们比较关心的问题.侧链真是在这样的情况出现的.一.侧链的概念侧链(sidechains)实质上不是特指某个区块链,而是指遵守侧链协议的所有区块链,该名词是相对与比特币主链来说的.侧链协议是指:可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议.显然,只

用 Go 构建一个区块链 -- Part 7: 网络

引言 到目前为止,我们所构建的原型已经具备了区块链所有的关键特性:匿名,安全,随机生成的地址:区块链数据存储:工作量证明系统:可靠地存储交易.尽管这些特性都不可或缺,但是仍有不足.能够使得这些特性真正发光发热,使得加密货币成为可能的,是网络(network).如果实现的这样一个区块链仅仅运行在单一节点上,有什么用呢?如果只有一个用户,那么这些基于密码学的特性,又有什么用呢?正是由于网络,才使得整个机制能够运转和发光发热. 你可以将这些区块链特性认为是规则(rule),类似于人类在一起生活,繁衍生

区块链:价值网络的中国机遇

本文转自 http://blog.sina.com.cn/s/blog_182cf59430102xebs.html 互联网实现了信息专递,而区块链则实现了价值传递.反观20世纪90年代以来互联网对人类社会发展的巨大贡献,区块链也因此被追捧为下一个数字时代的新动力. 作为一项创新的技术架构,有人将区块链比作20世纪90年代的互联网基础协议TCP/IP,而将基于区块链所形成的新互联网称为价值网络:也有人将区块链比作更为具体的SMTP协议,认为互联网实现了信息传递,而区块链则实现了价值传递. 反观2

第10讲 | 深入区块链技术(二):P2P网络

在上一篇文章中,我大致讲解了一下区块链技术的几个核心要素.P2P网络协议.分布式一致性算法(共识机制).加密签名算法.账户与存储模型.今天我们就来看看区块链技术的第一个核心要素:P2P网络. 如果我们简单来看P2P技术,它的应用领域已经非常广泛了,从流媒体到点对点通讯.从文件共享到协同处理,多种领域都有它的身影出现. 同样的,P2P的网络协议也有很多,比较常见的有BitTorrent.ED2K.Gnutella.Tor等,也就是我们常说的BT工具和电驴. 比特币.以太坊等众多数字货币都实现了属于

区块链技术可以帮助汇款机构进行升级

目前无论哪种汇款方式,都有各种中介参与其中,收取一定比例的手续费.而且整个汇款流程需要耗费相当的成本和时间.尤其是跨境汇款的效率和成本问题更加突出.一旦利用比特币交易区块链技术,就可以在成本和效率两方面获得巨大利益.因此目前应当深入了解该技术,才是未来发展的保证. 传统商业模式正遭到颠覆性技术的挑战,该技术发展速度甚至很难赶上.然而如果说有什么可以解决企业和个人遇到的问题,大多还是受欢迎的.其中一个问题是大量外籍人口依赖于现金跨境汇款.海湾地区汇款行业规模达到1000亿美元,单只阿联酋就有190

为什么说中国的区块链市场被严重低估了?

为什么说中国的区块链市场被严重低估了对于虚拟货币市场,2018年的开场颇为动荡,对于中国尤为如此.本文作者是美国一位区块链资深投资人请添加链接描述和知名科技专栏作家,他认为,中国很多优质的区块链项目被低估了. 尽管存在政策禁锢,但长期来讲,技术优势加集中的社会资源,都为中国在区块链行业成为发力提供了优质条件.回归价值投资的核心方法论,我们该如何看待这波乱潮?这些值得我们关注的中国区块链项目到底想解决现实世界中的什么问题? 现在区块链市场就像开荒前的美国西部,似乎每天都能发现几十个新的项目. co