`
mryufeng
  • 浏览: 982265 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

节点间通讯的通道微调

阅读更多
erlang节点间通讯是可以配置的,默认的是inet_tcp 。当2个节点要沟通的时候,net_kernel模块会负责建立必要的连接。 inet_tcp会调用底层的gen_tcp进行数据发送接受。 rpc或者节点间的消息交互都是通过这个port出去的。

在分布节点间,有时候会有大量的消息流动,那么所有的消息都是通过这个port出去 进来,所以这个port的性能极大的影响了节点间通讯的效率。那么有时候, 我们会想微调这个port的参数,根据业务的特点实现效率最大化,但是port如何得到呢?

node_port(Node)->
    {_, Owner}=lists:keyfind(owner, 1, element(2, net_kernel:node_info(Node))),
    hd([P|| P<-erlang:ports(), erlang:port_info(P, connected) == {connected,Owner}])

有了Port, 那么我们就可以设置tcp port的水位线,buffer等等。
inet:setopts(node_port('xx@nd-desktop'), [{high_watermark, 131072}]).
另外要注意 nodeup nodedown可能会换了个tcp链接 要注意重新获取。

还有另外一种方法,设置所有gen_tcp的行为, 比如以下方法:
erl -kernel inet_default_connect_options '[{sndbuf, 1048576}, {high_watermark, 131072}]'

但是这个影响面非常大, 影响到正常tcp的参数了。
分享到:
评论
9 楼 mryufeng 2010-03-23  
tcp直连, 你可以自己写个carrier代替系统的,来传输节点见的消息。
8 楼 ifenghu 2010-03-21  
请问因特网上两个节点间的通信,Erlang是怎么解决穿NAT的问题的?谢谢~
7 楼 mryufeng 2010-01-27  
rain2005 写道
刚准备提问high_watermark是什么东西的,原来这么多同志也不明白呵呵,(dist_)busy_port.就是让远程节点等待,稍后再发数据?


dist_busy_port是你和远程节点的tcp链接已经busy阻塞了.
high_watermark是指inet_drv中tcp的buffer的水位上线,和操作系统的buffer不同.
6 楼 rain2005 2010-01-26  
刚准备提问high_watermark是什么东西的,原来这么多同志也不明白呵呵,(dist_)busy_port.就是让远程节点等待,稍后再发数据?
5 楼 mryufeng 2009-09-24  
snd_buffer是socket在os kernel的buffer大小 水位线是在inet_driver里面的buffer大小 是完全2码事情。
4 楼 bachmozart 2009-09-24  
mryufeng 写道
送给tcp port的数据是保存在 queue里面, 既然是queue都要个水位线,预防overflow, 如果数据超过水位线就会 (dist_)busy_port. 默认的水位线很小。 


这个和TCP发送/接收缓冲区的那个low water/high water是一个事情吧,TCP默认接收缓冲区low water应该是一个字节,就是只要收到一个字节,就通知应用层有数据可读

老大给详细说说这个跟erlang的关系吧



3 楼 mryufeng 2009-09-24  
送给tcp port的数据是保存在 queue里面, 既然是queue都要个水位线,预防overflow, 如果数据超过水位线就会 (dist_)busy_port. 默认的水位线很小。 
2 楼 whrllm 2009-09-23  
请问一下high_watermark 和 lower_watermark分别代表什么呀 ?设置它为131072的原因说明什么呀,谢谢 :)
1 楼 litaocheng 2009-09-23  
嘿嘿,微调又多了个手段,赞!
老大怎么那么多产呢?

相关推荐

    QML TreeView添加节点间虚线

    综上所述,QML TreeView添加节点间虚线涉及到的主要知识点有:QML的TreeView控件、数据模型绑定、自定义Delegate、Path和PathStroke用于绘制虚线,以及根据节点位置动态调整虚线的可见性。通过理解和应用这些知识点...

    第四章、以太坊如何在本地私有链上创建新节点,节点间进行同步?

    接下来我们就在这条私有链上创建多个节点,并进行数据同步。 1、在privateChain目录下创建一个名为data1的节点 #进入privateChain目录 cd privateChain #初始化节点创世块(注意networkid要一致) geth --datadir ...

    python求解复杂网络的任意子节点间的网络最短距离.zip

    复杂网络,总节点数为N; m子网络,定义为任意m个节点所组成的网络拓扑; 从最简单的情形m = 2 开始,考虑m子网络的网络最短距离; m子网络的网络最短距离,定义为: 复杂网络中m个子节点(总节点数N) ,能形成彼此...

    基于Linux系统智能控制节点的通讯应用协议.pdf

    【标题】: "基于Linux系统智能控制节点的通讯应用协议" 【描述】: 本文讨论了一种应用于基于Linux嵌入式系统的智能控制节点的通信应用协议,旨在解决不同智能控制节点间通信需统一协议标准的问题。 【标签】: ...

    z_node_生成节点阻抗矩阵的程序_节点阻抗矩阵_

    在电力系统分析中,节点阻抗矩阵是至关重要的数学工具,它用于描述电网中各节点间的电气关系。本文将深入探讨“z_node”程序,这是一个专门用于生成节点阻抗矩阵的程序,对于理解和分析电力系统的运行特性具有重要...

    Redis主从节点间的命令传播

    本文将深入探讨Redis主从节点间的命令传播流程和心跳机制。 首先,我们要理解数据同步的三种方式:全量复制、部分复制和命令传播。全量复制通常在主从节点初次建立关系或主节点重启后发生,它涉及主节点生成RDB持久...

    面向区块链轻节点的支付通道瞭望塔技术研究.pdf

    面向区块链轻节点的支付通道瞭望塔技术研究.pdf

    复杂网络的节点重要性研究

    根据节点间交流频率的不同,本文将节点间的关系分为三类: 1. **弱关系**:指的是节点间互动较少或强度较弱的联系。这类关系可能不会显著影响节点的重要程度。 2. **单强关系**:在这种情况下,一个节点认为另一个...

    反向散射辅助的无线供能通信网络的节点间通信.docx

    反向散射辅助的无线供能通信网络节点间通信 本文研究反向散射辅助的无线供能通信网络节点间通信,旨在提高节点吞吐量和网络吞吐量。无线供能技术在无线网络领域的应用越来越广泛,能为多个无线传感节点提供稳定、可...

    行业分类-设备装置-实现节点间通信的方法、系统及装置.zip

    在IT行业中,节点间通信是网络技术中的一个关键概念,特别是在分布式系统、物联网(IoT)和计算机网络中。标题“行业分类-设备装置-实现节点间通信的方法、系统及装置”表明这是一个关于如何使不同设备或节点在特定...

    树父节点递归获取树子节点

    树形结构模拟了现实世界中的层次关系,每个节点可以有零个或多个子节点,除了根节点之外,每个节点都有一个父节点。在处理这类数据时,递归是一种非常有效的方法。本篇文章将详细介绍如何在Java中使用递归来实现从父...

    电梯间石材门套节点

    电梯间的石材门套节点图,cad版本,很不错

    ieee118节点潮流计算程序及节点数据

    电阻数据通常包括节点间的线路电阻和电抗,这些参数对于计算线路损耗和电流至关重要。电压数据则可能列出每个节点的额定电压或初始运行电压,这对于分析潮流分布和电压稳定性有着直接影响。 MATLAB是一种强大的数学...

    vb treeview 父节点和子节点联动,父节点被选中子节点全部被选中,子节点全部被选中,则父节点被选中,取消选中子节点,父节点被取消选中

    vb treeview控件父节点和子节点联动,如果父节点被选中,则子节点全部被选中,如果有一个子节点不被选中,则所有父节点都不被选中,如果有子节点不被选中,当选中该子节点,而该子节点同级节点都被选中时,则其父...

    ShaderGraph节点详解完整版20210331

    * Channel Mixer 节点:Channel Mixer 节点用于混合通道,根据输入的 RGB 值和各个通道的权重,输出混合后的 RGB 值。 * Invert Colors 节点:Invert Colors 节点用于反转颜色,可以选择单个或多个反转的通道。 * ...

    Treeview在winform中的运用(从数据库动态添加节点,增加节点、删除节点、复制节点)

    在本文中,我们将深入探讨如何在Winform应用中有效地利用Treeview控件,特别是在与数据库交互时动态添加、修改和管理节点。 1. **动态添加节点** 当你需要从数据库中获取数据并展示在Treeview上时,首先需要连接到...

    电信设备-基于第三方数据库实现业务节点通讯地址发现的方法.zip

    综上所述,基于第三方数据库实现业务节点通讯地址发现的方法是解决大型电信网络中节点间通信挑战的有效手段,它提供了动态、可靠且高效的通信解决方案。通过合理的设计和实施,可以极大地提升网络的稳定性和服务质量...

    houidni18.532节点大全.pdf

    - Chop节点:处理动画数据和通道。 - Chopnet节点:创建基于Chop节点的网络。 - Cop2节点:处理2D图像和贴图。 - Cop2net节点:创建基于Cop2节点的网络。 - Dop节点:负责动力学模拟,如粒子、流体、刚体、布料等。 ...

    matlab形成节点导纳矩阵的程序

    在电力系统分析中,节点导纳矩阵(Node Admittance Matrix)是一个关键的数学工具,用于描述电力网络中各节点间的电气关系。在MATLAB环境中,我们可以编写程序来生成这个矩阵,以便进行电力系统的潮流计算和其他相关...

    采用支路追加法生成的节点阻抗矩阵Matlab程序

    在电力系统分析中,节点阻抗矩阵是一种关键的数学工具,用于表示网络中各个节点间的电压与电流关系。本文将详细介绍采用支路追加法生成节点阻抗矩阵的方法,并结合Matlab程序进行深入探讨,同时关注IEEE 39节点系统...

Global site tag (gtag.js) - Google Analytics