阅读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

erlang如何有效地监视大量的并发连接的更多相关文章

  1. erlang怎样有效监听大量并发连接

    看了erlang的一些开源网络框架RabbitMQ.Ranch.他们都使用多个进程同一时候accept一个socket. 这样的方式在使得socketport监听的工作分担了很多其它的调度机会.可是, ...

  2. C10K并发连接_转

    转载:http://blog.csdn.net/wangtaomtk/article/details/51811011 1 C10K问题 大家都知道互联网的基础就是网络通信,早期的互联网可以说是一个小 ...

  3. 100万并发连接服务器笔记之Java Netty处理1M连接会怎么样

    前言 每一种该语言在某些极限情况下的表现一般都不太一样,那么我常用的Java语言,在达到100万个并发连接情况下,会怎么样呢,有些好奇,更有些期盼.这次使用经常使用的顺手的netty NIO框架(ne ...

  4. C#多线程环境下调用 HttpWebRequest 并发连接限制

    C#多线程环境下调用 HttpWebRequest 并发连接限制 .net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 win ...

  5. 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题

    1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...

  6. 多线程调用HttpWebRequest并发连接限制

    .net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows  7 下默认是2,在服务器操作 ...

  7. 大并发连接的oracle在Linux下内存不足的问题的分析

    大并发连接的oracle在Linux下内存不足的问题的分析 2010-01-28 20:06:21 分类: Oracle 最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库 ...

  8. (五)通过Python的select监控多个描述符实现并发连接

    概述 本文通过使用select改写之前的服务器程序通过监控多个套接字描述符来实现并发连接并加入了一些机制让程序更加健壮,不过我们所有的实验都是建立在单词发送数据不会超过1024字节,如果超过你需要做特 ...

  9. Nginx 限制并发连接和并发请求数配置

    Nginx限制并发连接和并发请求数配置   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 配置介绍 查看是否内置模块 # pwd /mnt/nginx-1.10.0 ...

随机推荐

  1. wiki 3143 二叉树的前序、中序及后序遍历

    先序遍历:訪问根.遍历左子树.遍历右子树,简称:DLR. 中序遍历:遍历左子树,訪问根,遍历右子树,简称:LDR. 后序遍历:遍历左子树,遍历右子树.訪问根.简称:LRD. 数组搞的: #pragma ...

  2. python web

    [root@xen202 wbk]# python -m SimpleHTTPServerServing HTTP on 0.0.0.0 port 8000 ...

  3. Windbg 32位版本和64位版本的选择

    习惯了Vsiual Studio的兄弟们可能会因为先入为主的原因以为所有的调试器都应该像它那样,其实不然,当你安装Debugging Tools for Windows的时候,你将发现有两个系列的工具 ...

  4. javascript --- 事件托付

    javascript 之 事件托付 长处:1.提高性能(仅仅须要对父级进行操作,子节点相同会拥有其相关属性和方法) 2.对于新加入的事件.也让其拥有父级事件的属性 <!doctype html& ...

  5. 理解Lambda表达式

    1.什么是Lambda表达式 Lambda表达式是一个匿名方法,通常在LINQ中被用来创建委托 简单来说.它是一个没有声明,没有访问修饰符,没有返回值.甚至没有名字的方法. 2.为什么我们需要使用La ...

  6. 在Windows系统上实现轻量级的线程间及进程间消息队列

    Windows没有message queue累世的IPC内核对象,使得在在处理IPC时少了一种传递消息的手段. 利用Windows的Naming Object可以实现一套简单的Inter-Thread ...

  7. UVALive 5791 Candy's Candy 解题报告

    比赛总结 题目 题意: 有f种口味的糖果,现在要把每颗糖果分到一些packs里面去.packs分两种: flavored pack:只有一种口味. variety pack:每种口味都有. 求满足下列 ...

  8. POJ3313 【随便写了个spfa就一A了,嗨皮】

    我顺便明白了....英文题意理解其实好大一部分还是靠感觉,然后自己猜题意,试题意. 你要是纠结于英文你就跪了. #include <iostream> #include <cstdi ...

  9. Java Swing界面编程(28)---复选框:JCheckBox

    程序能够通过JRadioButton实现单选button的功能,那么要实现复选框的功能,则必须使用JCheckBox完毕. package com.beyole.util; import java.a ...

  10. UNIX 网络编程之线程

    概述: 实现并发服务器一般都是父进程accept一个连接,然后fork一个子进程,该子进程处理与该连接对端的客户之间的通信.但是fork是昂贵,耗资源和时间.而线程是轻量级线程,它的创建比进程的创建块 ...