Erlang应用系统内部状态监控
来源:互联网 发布:人类男捏脸具体数据 编辑:程序博客网 时间:2024/05/29 06:49
spawn(fun() -> etop:start([{output, text}, {interval, 2}, {lines, 30}, {sort, reductions}]) end).
spawn(fun() -> etop:start([{output, text}, {interval, 2}, {lines, 30}, {sort, memory }]) end).
spawn(fun() -> etop:start([{output, text}, {interval, 2}, {lines, 30}, {sort, msg_q }]) end).
Sort: Value: runtime | reductions | memory | msg_q
一般根据消息队列、进程归约数、内存占用等排序情况就可以找到资源消耗较大的进程,然后重点关注。
需要指出的是,etop是一个单进程的扫描,即产生一个任务进程,其扫描所有的系统中的进程,然后进行排序。
如果系统中有几十万,甚至上百万的进程,则这样的etop扫描进程会直接拖挂整体系统。
因为erlang是公平调度系统,如果一个进程的任务太重会强占其他进程的归约数,导致其他进程被连累,形成恶性循环。
因此需要将etop改造成多进程的方式来扫描整体系统,代码如下:
sort(List) ->
SubList = lists:sublist(List, 20000),
case length(SubList) > 0 of
false ->
exit(normal);
true ->
spawn(fun() ->
Sort = fun({_A, Sa}, {_B, Sb}) ->
Sa > Sb
end,
R = lists:sort(Sort, SubList),
io:format("\n~p,sort:~p\n", [self(), lists:sublist(R, 4)]),
exit(normal)
end)
end,
case length(List) > 20000 of
true ->
sort(lists:nthtail(20001, List));
false ->
ok
end.
sort_memory() ->
Pids = [{P, Size} || P <- erlang:processes(), {memory, Size} <- [erlang:process_info(P, memory)]],
sort(Pids),
io:format("pid:~p", [self()]).
sort_reduction() ->
Pids = [{P, Size} || P <- erlang:processes(), {reductions, Size} <- [erlang:process_info(P, reductions)]],
sort(Pids),
io:format("pid:~p", [self()]).
sort_msg_queue() ->
Pids = [{P, Size} || P <- erlang:processes(), {message_queue_len, Size} <- [erlang:process_info(P, message_queue_len)]],
sort(Pids),
io:format("pid:~p", [self()]).
- Erlang应用系统内部状态监控
- [Erlang]系统内部监控工具
- Erlang如何查看gen_server内部的状态
- 监控应用状态
- sar 监控系统状态
- 用erlang打造系统级监控工具
- 查看Erlang运行期内部状态的方法(基于R13B04)
- [Erlang]使用recon从网页查看Erlang系统状态
- Android_07_监控应用的状态
- vmstat 监控系统的状态
- day 31 监控系统状态
- 应用监控系统 HawtIO
- Erlang原子(atom)的内部实现及应用
- 守护进程应用,监控应用程序状态
- Android-监控应用的状态(BroadcastReceiver)
- 41.android广播-监控应用的状态
- Android Broadcast 监控手机应用的状态
- VisualVM监控java应用内存状态
- Yum database disk image is malformed
- 继承深入理解-----effective C++条款36、37、38
- 马云:阿里巴巴有“三个必须”
- 让你提升命令行效率的 Bash 快捷键 [完整版]
- Opencv下矩阵的乘积
- Erlang应用系统内部状态监控
- wifidog+authpuppy搭建WiFi 接入设备认证测试平台
- C#时常需要调用C++DLL
- 第2次实验——算法基本功 与 综合思考
- gridview中实现checkbox全部选中
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- Hibernate做开发时遇到的一些问题
- acdreamoj1117The Arrow 概率dp
- 手势总结