[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界面,在浏览 ...
随机推荐
- 使用docker快速搭建环境-安装mysql
install docker sudo apt-get install -y docker.io download mysql sudo docker pull mysql start mysql s ...
- OpenMP 奇偶换排序
▶ 使用 OpenMP 进行奇偶交换排序 ● 代码 #include <stdio.h> #include <stdlib.h> #include <omp.h> ...
- C# JSON 序列化
1.JavaScriptSerializer System.Web.Extensions.dll System.Web.Script.Serialization命名空间 Serialize Deser ...
- Git----远程仓库01
到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了 可是用过集中式版本控制系统SVN的童鞋们会站出来说,这些功能在SVN里早就有了,没看出Git ...
- U3D+SVN: 两份相同资源放在不同目录下导致META的更改
U3D+SVN: 两份相同资源放在不同目录下导致META的更改. 实际情形:将地图文件map拷一份放在其它目录,回到UNITY编辑器,载入完成后加到磁盘,看到map文件夹下的所有meta都变红了. r ...
- 新手C#s.Split(),s.Substring(,)以及读取txt文件中的字符串的学习2018.08.05
s.split()用于字符串分割,具有多种重载方法,可以通过指定字符或字符串分割原字符串成为字符串数组. //s.Split()用于分割字符串为字符串数组,StringSplitOptions.Rem ...
- Linux学习---新建文件,查看文件,修改权限,删除
过程:在一个文件夹下面新建一个文件,然后查看文件,再修改权限,运行,最后删除 1.新建文件: touch Test.sh 补充:新建文件有好多种方式,一般用mkdir(创建目录,即文件夹).touc ...
- ASP.NET 网页动态添加客户端脚本
在System.Web.UI.Page类中包含了RegisterStarupScript()和RegisterClientScriptBlock()两个方法,使用这两个方法可以实现向Web页面动态添加 ...
- Jdeveloper下Svn的使用
Jdeveloper下Svn的使用 官方pdf:jdeveloper使用svn 官方网地址:http://www.oracle.com/technetwork/cn/java/subversion-0 ...
- HBase 系列(二)安装部署
HBase 系列(二)安装部署 本节以 Hadoop-2.7.6,HBase-1.4.5 为例安装 HBase 环境.HBase 也有三种模式:本地模式.伪分布模式.分布模式. 一.环境准备 (1) ...