[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界面,在浏览 ...
随机推荐
- oracle事务知识点小结
DML语句流程 1 获取事务锁和ITL2 锁定候选行3 生成redo4 生成undo5 生成redo record写入log buffer并更改数据块 事务提交1 分配SCN2 更新事务表,将事务槽状 ...
- [代码]multimap员工分组案例
案例要求: //multimap 案例//公司今天招聘了 5 个员工,5 名员工进入公司之后,需要指派员工在那个部门工作//人员信息有: 姓名 年龄 电话 工资等组成//通过 Multimap 进行信 ...
- excel拼接数据宏
将sheet2的A2 和 G2 加上 sheet5的A2和B2合一起生成新的sheet--就是将两个sheet的指定列前后拼接一起作为一个新的sheet Sub addwork() Sheets ...
- Vue cli 脚手架使用
1:基本的安装 安装node 安装npm Windows 更改环境变量 重启 环境变量生效 安装vue-cli 安装webpack 2:项目构建 https://segmentfault.com/a/ ...
- ASP.NET中高级程序员 面试题
1. 简要说一下.Net的编译过程. 2.ASP.NET与ASP的区别 3.谈一下ASP.NET页面生命周期 4.ASP.NET程序的运行机制.可以从一个页面的请求到返回的角度谈 5.Javascri ...
- 【转】TCP、UDP数据包大小的限制
来自:https://blog.csdn.net/caoshangpa/article/details/51530685 1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层 ...
- Thymeleaf 表达式工具类
Thymeleaf默认提供了丰富的表达式工具类,这里列举一些常用的工具类. Objects工具类 1 2 3 4 5 6 7 8 /* * 当obj不为空时,返回obj,否则返回default默认值 ...
- Java项目的结构
-------siwuxie095 以 Hello World 为例 这个工程用一个文件夹表示,被放置在左侧的资源管理面板 Package Explorer 中 ...
- 二叉树垂直遍历 · Binary Tree Vertical Order Traversal
[抄题]: 给定二叉树,返回其节点值的垂直遍历顺序. (即逐列从上到下).如果两个节点在同一行和同一列中,则顺序应 从左到右. 给定一个二叉树 {3,9,20,#,#,15,7} 3 /\ / \ 9 ...
- 五款免费的UML建模工具
1.免费UML建模工具推荐:JUDE–community 2.免费UML建模工具推荐:UMLet 3.免费UML建模工具推荐:ArgoUML 4.免费UML建模工具推荐:BOUml 5.免费UML建模 ...