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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS3选择器(全部)[通俗易懂]

    CSS3选择器(全部)[通俗易懂]CSS3选择器再CSS2.1选择器的基础上增加了属性选择器、伪类选择器、过滤选择器,减少了对HTML类名或ID名的依赖,避免了对HTML结构的干扰,让编写代码更加轻松。1,基本选择器(1)标签选择器(类型选择器)      统一定义常用标签的基本样式。​<!DOCTYPEhtml><htmllang="en"><head>…

    2022年7月11日
    68
  • windows本地 Oracle 11g安装完整教程 (windows10下安装)「建议收藏」

    windows本地 Oracle 11g安装完整教程 (windows10下安装)「建议收藏」转载于http://www.cnblogs.com/miye/p/6977920.html1.下载Oracle11gR2forWindows版本,下载地址如下官方网站:http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_1of2.ziphttp://download.oracle.com/otn/n…

    2022年4月20日
    156
  • python中怎么替换字符串中的内容_python怎么替换字符串的内容「建议收藏」

    python中怎么替换字符串中的内容_python怎么替换字符串的内容「建议收藏」Python中replace()函数把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过max次。replace()函数语法:str.replace(old,new[,max])参数:old–将被替换的子字符串。new–新字符串,用于替换old子字符串。max–可选字符串,替换不超过max次。返回值:返回字符串中的o…

    2022年5月9日
    154
  • vim怎么显示行号_vim型号

    vim怎么显示行号_vim型号1、临时使用  1、进入viorvim编辑环境下,进入命令行模式,然后输入setnumber,就可以显示行号了。如图:      2、输入setnonumber关闭行号      3、通过如上设置只能临时起作用,当你打开另外一个文件时我们的行号又没有了,所以接下来我们去永久配置一下吧。2、永久使用在/etc/vimrc(/etc/virc)文件中修改一下就ok了,在文件末尾加…

    2025年6月13日
    2
  • Python生成随机数列表_numpy产生指定范围的随机数

    Python生成随机数列表_numpy产生指定范围的随机数一.最直接的方式:用numpy.random模块来生成随机数组1、np.random.rand用于生成[0.0,1.0)之间的随机浮点数,当没有参数时,返回一个随机浮点数,当有一个参数时,返回该参数长度大小的一维随机浮点数数组,参数建议是整数型,因为未来版本的numpy可能不支持非整形参数。importnumpyasnp>>>np.random.rand(10)array([0

    2022年10月4日
    3
  • pycharm 激活码 2021_最新在线免费激活

    (pycharm 激活码 2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html83PVI25FMO-eyJsaWNlbnNlSW…

    2022年3月27日
    43

发表回复

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

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