我正在使用accept()
在进程之间转移sendmsg()
ed套接字。简而言之,我正在尝试构建一个简单的负载均衡器,它可以处理大量连接而无需缓冲流数据。
在处理大量(比方说数百个)并发TCP连接时,这是一个好主意吗?如果重要,我的系统是Gentoo Linux
答案 0 :(得分:3)
您可以按照上一个答案here共享文件描述符。
就个人而言,我总是使用pre-fork实现服务器。父级设置监听套接字,生成(pre-forks)子级,每个子级执行阻塞接受。我使用管道为父< - >儿童交流。
答案 1 :(得分:1)
直到有人做基准测试并确定发送文件描述符有多“难”,这仍然是猜测(有人可能会弹出:“嘿,发送这样的描述符很便宜”)。但是这里有。
如果您只是使用线程,您将(可能,如上所述)会更好。您可以拥有以下工作流程:
epoll(7)
等待流量(等待连接+有趣的流量)现在,绕过整个描述符发送部分。那捕获的是什么?问题是如果其中一个线程崩溃,整个过程崩溃。因此,您需要进行基准测试并确定哪种方法最适合您的服务器。
就我个人而言,我会按照上面概述的方式进行。另一点:如果工作人员是进行接受的进程的子进程,则不需要发送描述符。