Erlang内存占用排查流程

erlang 内存问题 erlang 内存分析 故障排除 阅读详情

使用Erlang搭建游戏服务器时,运维往往会吐槽cpu占用过高、带宽太大或者内存消耗太快,本文总结一下排查内存占用过高的主要思路和流程。

1. 检查进程数

	erlang:system_info(process_count).

看是否有大量的异常进程在耗内存,之前写过一篇博文(点我查看文章)记录过一个类似的问题:项目因为错误使用了三方数据库连接池,连接进程异常重启,产生了大量的数据库连接耗尽mysql连接池。

进程数量过大的话,就要找出没有被链接或者被监控的“孤儿进程”:

	[P || P<-processes(),
    	[{_,Ls},{_,Ms}] <- [process_info(P,[links,monitors])],
    	[]==Ls,[]==Ms].

或通过

	supervisor:count_children/1

查看sup下进程数量和状态。

2.查看节点内存分配情况

	erlang:memory().

输出(单位是byte):

[{
   
   total,361896384}
一次由Erlang垃圾回收导致的内存泄漏 最近有一个erlang的服务因为oom被kernel kill掉了, 由于从监控来说这个服务确实是内存不断增长。所以这个服务应该在哪里有内存泄漏才对。于是我又一次开始定位这个问题。定位到底哪个进程占用了最多的内存由于在另一个节点有一个没有crash,但是内存仍旧很高的节点,所以这个问题处理起来很简单。erlang提供了完整的运行时系统debug环境。这里我们用etop,根据memory排序,查看具... 阅读详情

相关推荐

RabbitMQ和Erlang内存使用分析

如果垃圾回收后仍然没有足够的内存,那么将会触发进程的扩展堆内存,通过重新分配更大的内存块来满足需求。总结起来,RabbitMQ和Erlang内存使用分析涉及到消息缓冲区、队列和交换器的元数据、进程内存等方面。通过合理配置和优化参数,监控系统的内存使用情况,并进行适当的调整,可以达到更好的性能和内存利用率。因此,了解RabbitMQ的内存使用情况需要对Erlang内存管理有一定的了解。定期监控和调优:定期监控RabbitMQ和Erlang内存使用情况,包括队列的长度、消息的数量、进程的内存占用等。

AzProcessgroup的博客 329

Erlang 初学者技巧及避免的陷阱

1. 传参或在匿名函数内慎用self() 通常在做消息传递或新建进程的时候我们需要将当前进程的Pid发给目标进程以便接收返回信息,但初学者不留意容易犯以下错误 spawn(fun() -> loop(self(), gen_tcp:accpet(...)) end). fun这段代码在本进程内是不会预先执行的,代码会原封不动传给目标进程。当实际调用self()...

weixin_30607659的博客 183

Erlang项目内存泄漏分析方法

主要介绍了Erlang项目内存泄漏分析方法,本文讲解了分析方法、分析流程并找到问题原因和解决方法,需要的朋友可以参考下

erlang

第一步: 查看进程数目是否正常? erlang:system_info(process_count).   第二步: 查看节点的内存消耗在什么地方? > erlang:memory().  [{total,2099813400},  {processes,1985444264},  {processes_used,1985276128},  {system,114

Blue528的博客 700

measure memory consumption in an Erlang system

原文地址:[url]http://erlang.org/faq/how_do_i.html#5.15[/url] Memory consumption is a bit of a tricky issue in Erlang. Usually, you don't need to worry about it because the garbage collector looks after...

erlang非业余研究 208

终极Luerl项目常见问题解决方案:从安装到运行的完整指南

Luerl是一个将Lua语言运行在Erlang环境中的强大项目,它结合了Lua的简洁灵活与Erlang的高并发特性。本文将为你解决使用Luerl过程中可能遇到的各类常见问题,帮助你快速掌握这个独特的跨语言开发工具。 [![Luerl项目logo](https://raw.gitcode.com/gh_mirrors/lu/luerl/raw/8756287ed2083795e7456855edf

gitblog_00219的博客 669

erlang 内存被大量占用,跟踪过程

第一步: 查看进程数目是否正常? erlang:system_info(process_count). 第二步: 查看节点的内存消耗在什么地方? > erlang:memory(). [{total,2099813400},   {processes,1985444264},   {processes_used,1985276128},   {system,11436

Sunface撩技术 3478

RabbitMQ及Erlang内存使用分析

一、RabbitMQ内存占用排查1.定位 linux 系统内存占用最高进程(1)输入 top 指令nqs@nqs-yq-haitao-order-1488355883912:~$ top然后输入大写的 M(Shift+m),基于内存占用倒序,找到占用最大内存的进程,如果内存占用最大的为 beam.smp 则为 RabbitMQ 进程占用。2.定位 RabbitMQ 内部组建内存占用情况(1)进入 R

jaredcoding的博客 1万+

erlang中检查内存泄露

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34208185的博客 260

Erlang服务器内存吃紧的优化解决方法

问题提出:服务器100万人在线,16G内存快被吃光。玩家进程占用内存偏高 解决方法: 第一步: erlang:system_info(process_count). 查看进程数目是否正常,是否超过了erlang虚拟机的最大进程数。 第二步: 查看节点的内存瓶颈所在地方 > erlang:memory().  [{total,2099813400}, {process

曾记花开不记年 1055

erlang 故障排查工具

系统级别perf top, dstat -tam, vtune 都能很好分析beam 瓶颈,本文主要erlang 级别排查: 1. 反编译 确认线上运行代码是否正确,reltools没掌握好,升级偶尔出现问题 decompile(Mod) -> {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(cod...

dbd379717的博客 367

Erlang 利用 recon 排查热点进程

erlang 进程在windows系统下持续占用 20% - 25%,怀疑 CPU 异常空转,于是进行排查排查较快,但过程比较经典,特此记录学习。

weixin_42445065的博客 380

Erlang如何查找内存消耗过高原因

Erlang如何查找内存消耗过高原因

sdsabc2000的专栏 1674

[Erlang]系统内部监控工具

系统级别perf top, dstat -tam, vtune 都能很好分析beam 瓶颈,本文主要erlang 级别排查:1. 反编译   确认线上运行代码是否正确,reltools没掌握好,升级偶尔出现问题decompile(Mod) -> {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(code:which(Mod), [abs

Sunface撩技术 2808

如何查看耗光内存的进程

首先说明一下问题,服务器1千多人在线,16G内存快被吃光。玩家进程占用内存偏高: 接下来是解决过程。 第一步: 查看进程数目是否正常? erlang:system_info(process_count). 进程数目合理 第二步: 查看节点的内存消耗在什么地方? > erlang:memory(). [{total,2099813400},  {process

Sunface撩技术 2099
上一篇: Erlang进程间通信和节点间通信学习笔记
下一篇: UE4学习打卡(第二周)
zuimrs
博客等级 码龄12年 32粉丝 44原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值