ITKeyword,专注技术干货聚合推荐

注册 | 登录

进程单向监控-Monitor

redennc 分享于 2013-04-28

推荐:dubbo 的monitor监控中心 配置过程_linux

源自:http://www.07net01.com/2014/09/63883.html 使用dubbo的话,两个工具是不可少的: 1:dubbo的管理控制台,在之前的笔记中介绍过 2:简易控制中心monitor 

2020腾讯云8月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

进程单向监控-Monitor

link方式可以建立进程之间的双向链接关系,我们可以通过monitor实现单向的监控,这在gen_server代码里面可以看到对应的例子

  •  erlang:monitor(process, Caller), %建立单向监控
  • 被监控进程死掉发送的消息规格:   {'DOWN',Mref,process,Pid,Reason}
  • 解除监控:erlang:demonitor(Ref)

gen_server代码片段:

do_multi_call(Nodes, Name, Req, Timeout) ->
    Tag = make_ref(),
    Caller = self(),
    Receiver =
 spawn(
   fun() ->
    %% Middleman process. Should be unsensitive to regular
    %% exit signals. The sychronization is needed in case
    %% the receiver would exit before the caller started
    %% the monitor.
    process_flag(trap_exit, true),
    Mref = erlang:monitor(process, Caller), %建立单向监控
    receive
        {Caller,Tag} ->
     Monitors = send_nodes(Nodes, Name, Tag, Req),
     TimerId = erlang:start_timer(Timeout, self(), ok),
     Result = rec_nodes(Tag, Monitors, Name, TimerId),
     exit({self(),Tag,Result});
        {'DOWN',Mref,_,_,_} ->  %接受监控消息
     %% Caller died before sending us the go-ahead.
     %% Give up silently.
     exit(normal)
    end
   end),
    Mref = erlang:monitor(process, Receiver),
    Receiver ! {self(),Tag},
    receive
 {'DOWN',Mref,_,_,{Receiver,Tag,Result}} ->
     Result;
 {'DOWN',Mref,_,_,Reason} ->
     %% The middleman code failed. Or someone did 
     %% exit(_, kill) on the middleman process => Reason==killed
     exit(Reason)
    end.

推荐:android monitor tool (7.0 监控文件系统 native层实现)

       C写的代码来监控文件系统事件,按照一定格式输入,PC机端再解析:        android 本地代码如下:(编译成 /system/bin/inotify  ,并记得push 到android


handle_call({subscribe, PId}, _From, #state{subscribers = Subscribers} = State) ->
    NSubscribers = ordsets:add_element(PId, Subscribers),
    erlang:monitor(process, PId),
    {reply, {ok, ok}, State#state{subscribers = NSubscribers}};

handle_info({'DOWN', _MRef, _, PId, _Reason}, #state{subscribers = Subscribers} = State) ->
    NSubscribers = ordsets:del_element(PId, Subscribers),
    {noreply, State#state{subscribers = NSubscribers}};


推荐:dubbo-monitor装配、 监控中心 配置过程

dubbo管理控制台开源部分主要包含: 提供者  路由规则  动态配置  访问控制  权重调节  负载均衡  负责人,等管理功能。 1、下载dubbo 我上传地址:http://downl

进程单向监控-Monitor link方式可以建立进程之间的双向链接关系,我们可以通过monitor实现单向的监控,这在gen_server代码里面可以看到对应的例子  erlang:monitor(process, Caller), %建立单向监

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。