Erlang监测系统CPU、内存、磁盘

erlang性能分析及进程监控工具 erlang性能分析工具使用示例 阅读详情

os_mon

Erlang的os_mon服务中提供了一些用于监测系统信息的服务
cpu_sup:监测CPU负载和使用率(Unix)
disksup:监测磁盘(Unix、Windows)
memsup:监测内存(Unix、Windows、VxWorks)
os_sup:监测系统日志(Solaris、Windows)

使用os_mon进行监测先必须启动监测服务application:start(os_mon) ,因为os_mon服务依赖于sasl服务,先必须启

动sasl服务,application:start(sasl) ,否则会返回{error,{not_started,sasl}} 错误。os_mon提供的四种监测服

务中默认会启动三种服务:cpu_sup、disksup和memsup,如果需要自己设置启动的监测服务,可以修改os_mon.app

文件中的配置参数
start_cpu_sup = bool()
start_disksup = bool()
start_memsup = bool()
start_os_sup = bool()
等于true时启动,等于false时不启动。os_mon.app文件在erlang的安装目录下../erl5.8.3/lib/os_mon-2.2.5

/ebin 。

cpu_sup

cpu监测在5.8.3版本中只能用于Solaris和Linux操作系统,负载值与Unix进程运行前在队列中的排队时间成正比,

因此值越大意味着负载越高,返回值除以256为rup和top命令中显示的值。avg1/0,avg5/0 和avg15/0 函数计算负载,

util/0 和util/1 函数计算CPU使用率。在Linux系统中,必须保证/proc文件目录能被cpu_sup服务访问,如果不能监

测服务会停止

模块中的函数列表
nprocs() -> UnixProcesses | {error, Reason}
返回UNIX进程数
avg1() -> SystemLoad | {error, Reason}
返回最后1分钟系统的负载
avg5() -> SystemLoad | {error, Reason}
返回最后5分钟系统的负载
avg15() -> SystemLoad | {error, Reason}
返回最后15分钟系统的负载
util() -> CpuUtil | {error, Reason}
返回CPU使用率
util(Opts) -> UtilSpec | {error, Reason}
返回CPU使用率的详细信息

调用这些函数取CPU监测数据时,如果前后两次调用,数值没有变化时显示为0,有点奇怪

disksup

disksup是一个用来监测磁盘空间的进程,适用于Unix和Windows系统。监测服务定期检查磁盘,对于每个磁盘或分

区,在它使用超过一定的可用空间量,通过{{disk_almost_full,MountedOn},[]} 设置产生报警。在Unix下所有的

本地磁盘都会被监测,包括存在的交换分区。在WIN32下所有类型为“FIXED_DISK”逻辑驱动器都会被检查。

配置监控间隔时间和阀值
disk_space_check_interval = int()>0
监测间隔时间,单位为分钟,默认为30分钟。
disk_almost_full_threshold = float()
监测阀值,磁盘使用率达到多少时产生告警,默认为80,单位是百分比。

模块中的函数列表
get_disk_data() -> [DiskData]
返回最后一次磁盘检查结果
get_check_interval() -> MS
获取监测间隔时间,单位是毫秒
set_check_interval(Minutes) -> ok
设置监测间隔时间,这个设置在下一次监测时生效,服务退出后,这个值会失效,重启服务后使用默认值
get_almost_full_threshold() -> Percent
获取监测阀值,为磁盘使用率
set_almost_full_threshold(Float) -> ok
设置监测阀值,服务重启后,设置失效,使用默认值

memsup

memsup用来监控系统内存和各个进程内存的使用率,适用于Unix、Windows和VxWorks系统,定时监测内存,如果内

存使用超过系统分配的一定值,通过{system_memory_high_watermark, []} 设置产生告警。如果系统中任何Erlang

进程使用内存超过在总内存中的一定百分比,通过设置{process_memory_high_watermark,Pid} 产生告警。

配置监测间隔时间和阀值
memory_check_interval = int()>0
以分钟为刻度,默认为1分钟
system_memory_high_watermark = float()
内存使用阀值,默认为80,单位是百分比
process_memory_high_watermark = float()
单个Erlang进程使用阀值,默认为5,单位是百分比
memsup_helper_timeout = int()>0
等待监测结果的超时时间,默认为30秒
memsup_system_only = bool()
设置是否只监控系统内存使用率还是同时监测Erlang进程内存使用率,默认为false

模块中的函数列表
get_memory_data() -> {Total,Allocated,Worst}
获取系统总内存,使用内存,每个Erlang进程的使用内存
get_system_memory_data() -> MemDataList
获取系统内存使用的详细信息
get_os_wordsize() -> Wordsize
获取操作系统的位数
get_check_interval() -> MS
获取监测间隔时间,单位毫秒
set_check_interval(Minutes) -> ok
设置监测间隔时间,单位分钟
get_procmem_high_watermark() -> int()
获取每一进程内存使用告警阀值
set_procmem_high_watermark(Float) -> ok
设置每一进程内存告警阀值
get_sysmem_high_watermark() -> int()
获取系统内存使用阀值
set_sysmem_high_watermark(Float) -> ok
设置系统内存使用阀值
get_helper_timeout() -> Seconds
获取监测数据返回等待时间
set_helper_timeout(Seconds) -> ok
设置监测数据返回等待时间

Erlang -- sys模块常用接口使用 sys模块提供了发送系统消息及调试信息的接口。 常用接口 change_code(Name, Module, OldVsn, Extra) -> ok | {error, Reason} change_code(Name, Module, OldVsn, Extra, Timeout) -> ok | {error, Reason} 通知进程Name改变状态,调用此接口之前需要通过sys:suspend/1-2先挂起进程。change_code/4-5被调用后,Module:system 阅读详情

相关推荐

Erlang内存占用排查流程

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

zuimrs的博客 2356

Erlang的系统限制

在Erlang Effecienty Guide 第9章中提到 1. 进程的数量 缺省情况下同时存在的最大Erlang进程数量不超过2^15=32768个,这个限制可以放宽至2^28=268435456个(具体查阅系统标志+P ),由于内存的限制在32位环境中这个数量不太可能达到。 2. atom最多能有多少个字符 255个 3. 最多能有多少atom(atom的最大数量) 2^20=...

好记性不如烂博客 302

erlang整理的一些心得和lunix查看cpu和内存信息的方法

erlang整理的一些心得和lunix查看cpu和内存信息的方法

erlang的cpu调优

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

weixin_34399060的博客 638

TCGA之GDC-client工具下载安装与使用

文章主要是对GDC-client工具下载TCGA数据库数据整个过程的一个记录 1.下载GDC-client工具 GDC-client工具网址:GDC Data Transfer Tool | NCI Genomic Data Commons (cancer.gov) 我这里下的是上图中红圈中的版本, 2.解压安装 从网上了解的是不能解压到带中文的路径里,解压后是一个.exe文件,为了能直接在cmd命令行下使用,将其加入系统环境: 点击新建之后,输入将文件解压到的路径,然后...

better_strong的博客 1万+

Halcon实战:5分钟搞定灰度图转热力图(附完整代码)

本文提供了一份Halcon实战指南,详细讲解如何在5分钟内将灰度图转换为直观的热力图。通过核心代码演示了利用HSV颜色模型进行色彩映射的原理与步骤,包括图像归一化、通道构建与空间转换,并附赠了深度图可视化等进阶应用技巧,帮助工程师快速提升图像分析效果。

weixin_29240343的博客 282

获取erlang系统信息的一些方法

SchedId      = erlang:system_info(scheduler_id), SchedNum     = erlang:system_info(schedulers), ProcCount    = erlang:system_info(process_count),

Sunface撩技术 3206

用Java和MQTT搞定大疆无人机自动巡检:一个真实机场项目的踩坑与优化记录

本文详细介绍了如何利用Java和MQTT协议实现大疆无人机在机场自动巡检系统的开发与优化。通过实战案例分享系统架构设计、通信协议选型、断线重连机制及数据通道优化等关键环节,帮助开发者解决GPS信号漂移、MQTT消息风暴等典型问题,提升系统性能和可靠性。

weixin_30275415的博客 495

Erlang 内存管理

Erlang核心开发者Lukas Larsson在2014年3月份Erlang Factory上的一个演讲详细介绍了Erlang内存体系的原理以及调优案例:在这里可以下载slides和观看视频(为了方便不方便科学上网的同学,我把视频搬运到了 http://v.youku.com/v_show/id_XNzA1MjA0OTEy.html )

gdou_shelin的博客 655

基于双向GRU LSTM DNN水电站水文数据的每日径流量预测 完整代码+数据 可直接运行

基于双向GRU LSTM DNN水电站水文数据的每日径流量预测 完整代码+数据 可直接运行

1902

QT西游回合制源码+java后台管理系统

这是一套回合制游戏源码,很适合学习。

renkai721的专栏 2536

erlang gen:tcp 消息堆积问题

一:问题 上一次服务器上线,碰到了个问题,玩家进程在gen_tcp:send时消息堆积,有十多个玩家消息堆积了5W+条,服务器内存过大 二:原因 我们追一下gen_tcp:send的代码 send(S, Packet) when is_port(S) -> case inet_db:lookup_socket(S) of {ok, M

taitoubiyan1的专栏 2304

SAP_FICO模块-资产减值功能对折旧和残值的影响

SAP_FICO模块-资产减值操作对资产历史折旧以及后续折旧的影响,包括减值操作的配置前提

风沙的博客 2805

erlang性能监控

Etop 类似top命令,查看erlang进程占用cpu、内存较高的进程 node        atom       erlang node port        integer    The used port accumulate  boolean    If true execution time is accumulated lines       i

曾记花开不记年 882

Spring AI Alibaba 1.x 源码分析-架构设计

本文通过分析Spring AI Alibaba 框架的源码,分析出其原理和架构设计,无论是用于项目开发、技术评估还是团队培训都具有重要价值。

program哲学 489

超详细的Burp Suite安装使用

‌Burp Suite是一个强大的Web应用安全测试工具,适用于网络安全专业人士进行自动化网络应用程序的安全测试。‌ 它提供了在Windows和Kali Linux上安装和激活Burp Suite Professional的简便步骤,帮助用户快速集成并启用强大的网络扫描和渗透测试功能。Burp Suite的特点包括易于安装、良好的兼容性、内置的自动化工具、优秀的用户体验以及详细的教程,使得无论是安全领域的新手还是经验丰富的专家,都能轻松上手并高效地进行安全测试。此外,Burp Suite还支持扩展功能的使用

Dreams°的博客 2641

用erlang打造系统级监控工具

erlang中大多数结构是list,许多操作也是通过遍历list来实现的,我们在大量list操作的同时同样会带来一个问题——内存可能会因为无限制的list耗尽,所以一般一个完善的erlang系统总是要带一个系统级别的监控工具,用于在特殊情况下使系统免于内存耗尽的崩溃。尽管我们可能会用很多操作系统的工具来监控每个用户进程的内存等信息,但是对于每一个erlang进程来说,这种工具是做不到的。 erl

pyf725324的专栏 1110

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用fprof进行性能分析

Erlang tools lib中包含三个用于性能分析的工具:cprof,eporf和fprof。 cprof 提供函数调用计数,其对系统的性能影响最小 eprof 提供函数运行时间的百分比 fprof 通过将trace存储到文件,提供函数调用计数及运行时间统计信息 这里我们主要介绍fprof,首先其提供的信息最为详细,其次因为将trace存储到文件中,我们可以进行较长运行时间的性能分...

Erlang Display - Erlang问答社区:www.erlangqa.com 608

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Tsung笔记之插件编写篇

前言 Tsung对具体协议、通道的支持,一般以插件形式提供接口,接口不是很复杂,插件也很容易编写,支持协议多,也就不足为怪了。 下面首先梳理一下当前Tsung 1.6.0所有内置插件,然后为一个名称为Qmsg的私有二进制协议编写插件, 运行Qmsg服务器端程序,执行压力测试,最后查看测试报告。 已支持插件梳理 Tsung 1.6.0支持的协议很多,简单梳理一下: 

Lee的博客 1831

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Erlang虚拟机内存使用问题以及监控

Erlang虽然号称N个9的稳定性,但是在实际使用中还是有很多机会看到Erlang Crash了的,其中和VM相关的Crash 十有八九是由于内存使用过量,导致系统服务分配内存导致的。Erlang的内存分配测量是集中批发,零售给各个VM部件,包括用户进程和ETS数据库等内存消费大户。VM的内存增长是以fib方式上升的,一旦你的内存使用到G级别,那么之后的大量内存分配会以超过你预想的速度消费。

Sunface撩技术 2548

Nebula Graph学习篇2_版本v2.6.1之前的bug导致OOM

nebula graph 图数据库v2.6.1版本内存飙升OOM的bug

xiaosi的博客 2404

memsup 模块

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

weixin_34319640的博客 159

Centos上rabbitmq部署及参数优化

RabbitMQ是一个流行的消息代理,可以轻松地在分布式系统之间传递消息。RabbitMQ的配置文件位于/etc/rabbitmq/rabbitmq.conf。可以在此文件中配置各种参数。RabbitMQ可以通过官方存储库进行安装。至此,RabbitMQ的部署和优化完成。

迪之的博客 859

Erlang内存分配策略

场景: 游服 erl虚拟机内存占用率过高,但是实际上的内存利用率非常低。原因是内存分配采用的是最快分配策略,会导致 1kb大小的数据占用 100kb大小的内存块,导致利用率低。 原因: 我们项目中频繁使用二进制数据,Port口请求、DB存储都有使用二进制数据,当二进制数据的长度超过64 bytes 时就会在堆内存开辟一块空间。数据库read之后,会把查询的值缓存一天,这个值占用的内存空间就不会被释放掉。 而内存利用率低的原因个人认为是因为登录数据、战报数据开辟的空间比较大,而DB读取的数据比较小,小的数据占

为天地立心,为生民立命,为往圣继绝学,为万世开太平 1631

Hyperledger fabric-couchdb镜像版本的坑

启动出现一下错误 [root@1-242 ~]# docker logs couchdb0 ...

1988
上一篇: Log4Erl 使用小记
下一篇: AS3 与 服务器 64位 int 交互
jamesjun
博客等级 码龄19年 25粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值