[Erlang33]使用recon从网页查看Erlang运行状态
0.需求分析
1.在进程数达到10w级以上的Node调用erlang:processes()来得到所有的进程Pid.然后算长度blabla...;
2. 当某个进程的信箱被堵塞了上万个消息队列时调用erlang:process_info(Pid,messages)来查看所有的消息。
| recon_web | observer |
| web页面查看,不需求wx GUI | 需要Erlang安装wx GUI application |
| 保证可以在生产环境中被安全调用 | 如果对于ets非常多或进程达到一定数量时会崩溃掉,不适合大多数在Node已出状况时使用 |
1. 项目介绍
| cowboy 1.0.1 | websocket 用于server通信 |
| recon | 用于查看Node状态 |
| jsx | 用于json转换 |
| lager | 日志记录 |
| socket.io.client | web端的websocket维护 |
| highcharts | web端绘制图表 |
2.recon_web 实现


3. recon_web中各种图表说明
1> recon_web_status:get_recon_info(node_stats_list).
[{process_summary,[{process_count,86},
{run_queue,0},
{error_logger_queue_len,0},
{memory_total,20032952},
{memory_procs,6067544},
{memory_atoms,330312},
{memory_bin,467040},
{memory_ets,465936}]},
{mem_summary,[{bytes_in,0},
{bytes_out,0},
{gc_count,2},
{gc_words_reclaimed,256},
{reductions,130454},
{scheduler_usage,[{1,0.9252873563218391},
{2,0.147239263803681},
{3,0.13218390804597702},
{4,0.14285714285714285}]}]}]
3.1. 根据 error_logger_queue_len process_count run_queue绘制以下表:

3.2. 根据上面的memory_total,memory_procs,memory_atoms,memory_bin,memory_ets绘制:

3. 3.根据scheduler_usage绘制:

3.4 根据bytes_in,bytes_out绘制:

2> recon_web_status:get_recon_info(proc_count).
[{proc_count,[{memory,[{<<"application_controller">>,602096},
{<<"0.26.0">>,372368},
{<<"recon_server">>,372328},
{<<"code_server">>,284656},
{<<"kernel_sup">>,197384},
{<<"0.159.0">>,88632},
{<<"erl_prim_loader">>,88552},
{<<"error_logger">>,75904},
{<<"init">>,67896},
{<<"0.45.0">>,55064}]},
{bin_memory,[{<<"kernel_sup">>,396661},
{<<"erl_prim_loader">>,27958},
{<<"0.26.0">>,7408},
{<<"0.159.0">>,5527},
{<<"0.45.0">>,1264},
{<<"application_controller">>,947},
{<<"user">>,852},
{<<"recon_server">>,454},
{<<"lager_event">>,278},
{<<"cowboy_clock">>,203}]},
{reductions,[{<<"recon_server">>,43125661},
{<<"erl_prim_loader">>,1328265},
{<<"0.159.0">>,243664},
{<<"code_server">>,196114},
{<<"application_controller">>,56899},
{<<"timer_server">>,53145},
{<<"kernel_sup">>,48774},
{<<"cowboy_clock">>,30740},
{<<"file_server_2">>,24547},
{<<"init">>,17949}]},
{total_heap_size,[{<<"application_controller">>,75112},
{<<"recon_server">>,46421},
{<<"0.26.0">>,46421},
{<<"code_server">>,35462},
{<<"kernel_sup">>,24503},
{<<"0.159.0">>,10958},
{<<"erl_prim_loader">>,10957},
{<<"error_logger">>,9358},
{<<"init">>,8370},
{<<"0.45.0">>,6771}]}]}]
3.5根据上面的memory, bin_memory,reductions, total_heap_size绘制:

3> recon_web_status:get_recon_info(port).
[{port_summary,[{<<"efile">>,5},
{<<"tcp_inet">>,2},
{<<"2/2">>,1},
{<<"tty_sl -c -e">>,1}]}]
3.6.根据 port_summary绘制:

4> recon_web_status:get_recon_info(inet_count).
[{inet_count,[{sent_oct,[]},
{recv_oct,[{<<"Port0.4012">>,1205},{<<"Port0.3695">>,0}]},
{sent_cnt,[]},
{recv_cnt,[{<<"Port0.4012">>,72},{<<"Port0.3695">>,0}]}]}]
3. 7.根据sent_oct, recv_oct, sent_cnt, recv_cnt绘制:

5>recon_web_status:get_recon_info(alloc_memory).
[{used,20804344},
{allocated,32247216},
{unused,11269856},
{allocated_types,[{binary_alloc,2786160},
{driver_alloc,164720},
{eheap_alloc,6763376},
{ets_alloc,1475440},
{fix_alloc,426864},
{ll_alloc,19923784},
{sl_alloc,164720},
{std_alloc,934768},
{temp_alloc,655960}]},
{allocated_instances,[{0,9094640},
{1,6305264},
{2,1246704},
{3,15664624},
{4,984560}]}]
3.8根据alloc_memory绘制:

6> recon_web_status:get_recon_info(cache_hit_rates).
[{cache_hit_rates,[{<<"instance1">>,[602,1113]},
{<<"instance3">>,[148,213]},
{<<"instance0">>,"OV"},
{<<"instance2">>,[7,13]},
{<<"instance4">>,[0,0]}]}]
3.9 根据cache_hit_rates绘制:

4. 参考文档
cowboy 建立websocket:http://ninenines.eu/docs/en/cowboy/HEAD/guide/ws_handlers/
highcharts: http://www.highcharts.com/
---------------------------------------------------------------------------------------------------------------------

inside the beam scheduler
[Erlang33]使用recon从网页查看Erlang运行状态的更多相关文章
- 查看cics 运行状态
查看cics 运行状态cicscp -v status all
- 利用 SQL Monitor 查看语句运行状态步骤
利用 SQL Monitor 查看语句运行状态步骤 1.确定语句被 SQL Monitor 监控 SQL> SELECT * FROM GV$SQL_MONITOR WHERE sql_id=' ...
- linux下查看Memcached运行状态
查看Memcached运行状态的命令是:echo stats | nc 127.0.0.1 11211 查看memcached状态的基本命令,通过这个命令可以看到如下信息: STAT pid 2245 ...
- 查看crontab运行状态
cron服务是linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start/sbin/service crond stop/sbin/ ...
- 在dos下查看memcache运行状态
在dos命令行下查看memcache运行状态,操作很简单,只需cmd下输入:telnet IP 端口号->stats ,如果本机器不支持telnet还需安装,可以百度telnet的安装方法. ...
- mongostat查看mongodb运行状态使用命令介绍
mongostat是mongodb自带的一个用来查看mongodb运行状态的工具 使用说明 mongostat -h 字段说明 启用后的状况是这样的 insert query update del ...
- docker基础——自定义镜像、创建私有仓库、查看 docker 运行状态
一.自定义镜像 1,案例1 要求:请自定义一个 docker 镜像,基于 hub.c.163.com/library/centos,要求创建出来的镜像在生成容器的时候,可以直接使用 ifconfig ...
- LINUX命令行如何查看memcache运行状态
(附加)如何查看memcache服务器端版本: ./memcached -h memcache的运行状态可以方便的用 stats 命令显示. 首先用telnet 127.0.0.1 11211这样 ...
- 用web查看hadoop运行状态
转载--http://www.weixuehao.com/archives/621 我们安装完hadoop,下面我们从视觉上看看hadoop怎么玩的. 我们可以在win7系统上,通过web界面,在浏览 ...
随机推荐
- SSH&SFTP服务分离+家目录锁定
Step 1 在root用户下创建维护账号的家目录,此处以创建userftp帐号的家目录为例. mkdir -p /chroot/home/user Step 2 在root用户根目录下执行以下命令设 ...
- javascript使用bind指定接收者
var json = { jArray: [], jPush: function (c) { this.jArray.push(c); } } var examp = ["123" ...
- Sql Server 2016数据库生成带数据的脚本
步骤:右键点击对应数据库->任务->生成脚本 在弹出的会话框中选择需要的对象,点击下一步,在设置和编写脚本选项中,点开高级按钮(如图)选择架构和数据点击确定就可以了. 提醒:如果你在数据库 ...
- go语言数组与切片比较
一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式:[length]Type .[N]Type{value1, value2, . ...
- 云计算与虚拟化KVM深度实践
徐亮伟, 江湖人称标杆徐.多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作.擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作. 个人博客"徐亮伟架构师之路&quo ...
- strongswan
StrongSwan is an open source IPsec-based VPN Solution. It supports both the IKEv1 and IKEv2 key exch ...
- c# 类间关系
一.依赖关系 简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的.临时性的.非常弱的,但是类B的变化会影响到类A.比如某人要过河,需要借用一条船,此时人与船之间的关 ...
- PowerDesigner 生成的脚本取掉双引号
建模工具PowerDesigner http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html 默认导出在带双引号,表名称后期使用的时 ...
- Proxmox VE 添加软RAID
apt-get update; apt-get install mdadm 安装软件 mdadm -C <设备名字> 创建模式 -l raid等级,0,1,5之类的 -n 使用的磁 ...
- filebeat 笔记
认识Beats Beats是用于单用途数据托运人的平台.它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch. (画外音:通俗地理解,就是采集数据 ...