erlang如何有效地监视大量的并发连接

erlang如何有效地监视大量的并发连接

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

阅读erlang一些开源web框架RabbitMQ、Ranch,他们使用多个进程在同一时间accept一socket。以这样的方式,使socketport监控共享很多其他的机会调度工作,但,在erlang在,socket接受一个新的连接之后,假设有一个过程,你要处理的消息,调用gen_tcp:controlling_process(Socket, Pid)。

所以问题来了,erlang多个进程同一时候监听一个socket安全吗?

这样的方式在早期的erlang是不安全的。但R11B03 版本号之后,erlang做了改进,同意多个进程同一时候监听同一个socket。

erlang R11B03 更新日志

OTP-6416 gen_tcp now allows for several processes to issue accept calls to the same listen-socket simultaniously. The different accepting processes will get connected sockets on a first-come-first-served basis.

当多个进程同一时候accept一个socket。erlang 内部将使用队列保存acceptor信息,以先来先服务的原则将新的连接关联到acceptor,再给acceptor投递消息 {inet_async, L, Ref, Result}。

详细看\erts\emulator\drivers\common\inet_drv.c 的 tcp_inet_ctl 函数,erlang对socket的处理都集中在inet_drv.c

erlang协调{backlog, N}。听好了新的连接

backlog这是erlang设置socket等待连接队列。

N队列的长度,默认值5,显然太小

参考:

http://blog.csdn.net/mycwq/article/details/27108911

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117810.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux系统644、755、777权限详解「建议收藏」

    linux系统644、755、777权限详解「建议收藏」常用的linux文件权限:444r–r–r–600rw——-644rw-r–r–666rw-rw-rw-700rwx——744rwxr–r–755rwxr-xr-x777rwxrwxrwx从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限。而具体的权限是由数字

    2022年6月17日
    26
  • Python中的三目表达式

    Python中的三目表达式Python中的三目表达式一般C系列语言,例如C#,三目运算都是“?:”的结构。例如:res=(i>j?true:false);但是在python中,使用的是if-else来实现的res=Trueifi>jelse2;#如果条件为真的话,那么结果为前者,否则为后者

    2022年10月27日
    0
  • java无法获取服务器上路径,JAVA获取服务器路径的步骤

    java无法获取服务器上路径,JAVA获取服务器路径的步骤JAVA获取服务器路径的方法1、在JSF环境中获取到ServletContext:ServletContextsc=(ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();2、servlet中获得项目绝对路径StringfilePath=this.getServletConfig…

    2022年7月11日
    20
  • maven常用打包命令

    maven常用打包命令maven常用打包命令1、mvncompile编译,将Java源程序编译成class字节码文件。2、mvntest测试,并生成测试报告3、mvnclean将以前编译得到的旧的class字节码文件删除4、mvnpakage打包,动态web工程打war包,Java工程打jar包。5、mvninstall将项目生成jar包放在仓库中,以便别的模块调用6、mvncleaninstall-Dmaven.test.skip=true打成jar包,并且抛弃测

    2022年6月3日
    114
  • 中标麒麟安装deb命令_麒麟源码

    中标麒麟安装deb命令_麒麟源码**中标麒麟NeoKylin-SDK里都有哪些库文件**下边是中标麒麟1-8和14的安装包内容。希望对中标麒麟开发的同学能有些帮助。[root@bogonNeoKylin-SDK]#shinstall.shPleaseselectwhichgroupyouwanttoinstall:1)C-development5)gnome-soft…

    2022年8月10日
    91
  • C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托

    C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托泛型集合和ArrayList的装箱拆箱、常见的泛型类型、泛型类和泛型方法、泛型约束、泛型委托泛型很难理解?不然在接触的一个新的概念的时候,总会感觉难以理解,当你掌握并能熟练地使用的时候,发现这个概念其实简单的,我相信大多数码农都会有这种似曾相识的感觉。可能大多数人刚学习泛型的时候觉得很难理解,当然我也是这样的,所以便写下这篇文章加深一下对泛型的印象。

    2022年7月11日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号