简体   繁体   English

erlang节点没有响应

[英]erlang node not responding

I received such message in erlang condose at first@localhost node 我在第一个@ localhost节点的erlang condose中收到了这样的消息

=ERROR REPORT==== 1-Jan-2011::23:19:28 ===
** Node 'second@localhost' not responding **
** Removing (timedout) connection **

My question is - what is timeout in this case? 我的问题是 - 在这种情况下什么是超时? How much time before causes this event? 这个事件导致多少时间? Howto prevent this "horror"? 如何防止这种“恐怖”? I can restore\\recover to normal work only by restart node... But what is the right way? 我只能通过重启节点恢复\\恢复到正常工作......但是正确的方法是什么?

Thank you, and Happy New Year! 谢谢,新年快乐!

Grepping for the not responding string in the Erlang source code, you can see how the message is generated in the dist_util module in the kernel application ( con_loop function). 在Erlang源代码中对未响应的字符串进行处理,可以看到如何在kernel应用程序的dist_util模块中生成消息( con_loop函数)。

    {error, not_responding} ->
        error_msg("** Node ~p not responding **~n"
              "** Removing (timedout) connection **~n",
              [Node]),

Within the module, the following documentation is present, explaining the logic behind ticks and not responding nodes: 在模块中,存在以下文档,解释了滴答和不响应节点背后的逻辑:

%%
%% Send a TICK to the other side.
%%
%% This will happen every 15 seconds (by default) 
%% The idea here is that every 15 secs, we write a little 
%% something on the connection if we haven't written anything for 
%% the last 15 secs.
%% This will ensure that nodes that are not responding due to 
%% hardware errors (Or being suspended by means of ^Z) will 
%% be considered to be down. If we do not want to have this  
%% we must start the net_kernel (in erlang) without its 
%% ticker process, In that case this code will never run 

%% And then every 60 seconds we also check the connection and 
%% close it if we havn't received anything on it for the 
%% last 60 secs. If ticked == tick we havn't received anything 
%% on the connection the last 60 secs. 

%% The detection time interval is thus, by default, 45s < DT < 75s 

%% A HIDDEN node is always (if not a pending write) ticked if 
%% we haven't read anything as a hidden node only ticks when it receives 
%% a TICK !! 

Hope this helps a bit. 希望这个对你有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM