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


相关推荐

  • 面向对象和面向过程的区别理解_c是面向对象还是面向过程

    面向对象和面向过程的区别理解_c是面向对象还是面向过程一、面向对象和面向过程面向对象面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操作是分离的,函数本身只

    2022年8月16日
  • 最长递增子序列(LIS)[通俗易懂]

    最长递增子序列(LIS)[通俗易懂]①dp[i]表示以i为结尾的最长子序列长度②dp[i]表示长度为i的最长递增子序列末尾的数

    2022年4月27日
  • Eclipse代码自动补全设置

    Eclipse代码自动补全设置Eclipse代码自动补全设置代码自动补全设置一、Window(窗口)→Perferences(选项设置)二、Java→Editor(编辑)→ContentAssist(内容辅助/代码提示)三、在AutoactivationtriggersforJava框中粘贴上“qwertyuioplkjhgfdsazxcvbnm”完成了,若文章对你有帮助,点个赞呗!代码自动补全设置大家如果经常使用Eclipse编写代码,那这篇文章对大家还是有所用处的。在这里我就教一下大家怎么设置E

    2022年5月31日
  • js 判断数组中是否包含某个元素(转载)「建议收藏」

    js 判断数组中是否包含某个元素(转载)「建议收藏」来源:https://www.cnblogs.com/yunshangwuyou/p/10539090.html方法一:array.indexOf(item,start):元素在数组中的位置,如果没与搜索到则返回-1。参数 描述 item 必须。查找的元素。 start 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是0到stringObject.length-1。 如省略该参数,则将从字符串的首字符开始检索。 ..

    2022年10月19日
  • C++11 decltype 的用法

    C++11 decltype 的用法文章目录decltype的意义decltype的用法1.推导规则2.举例说明3.模版案例更多细节问题C++14取消decltype其他decltype的意义参考博客:C++11新标准:decltype关键字有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量(如果要初始化就用auto了)。为了满足这一需求,C++11新标准引入了decl…

    2022年9月4日
  • 数据类型U16_数据类型怎么判断

    数据类型U16_数据类型怎么判断#defineU32unsignedint#defineU16unsignedshort#defineS32int#defineS16shortint#defineU8unsignedchar#defineS8charunsignedchar=u8unsignedshortint=u16unsignedlongint

    2022年10月16日

发表回复

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

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