Process 使用文件描述符传递时先前存在的连接的状态?

Process 使用文件描述符传递时先前存在的连接的状态?,process,connection,file-descriptor,apachebench,Process,Connection,File Descriptor,Apachebench,我正在使用一个Web服务器,使用一个unix套接字和sendmsg/recvmsg将套接字文件描述符传递给一个新的服务器进程,而不会丢失任何请求。在用ab测试它时,我发现客户端连接会延迟,apachebench(ab)会显示错误:“apr_poll:指定的超时已过期(70007)” 我怀疑文件描述符的地址发生了更改,这会使打开的连接变得无用,但是确保在每个请求结束时关闭连接并没有什么区别,有几个请求会失败 在套接字级别是否有一些额外的奇怪之处,或者ab只是有点奇怪?还有什么我应该考虑的吗 编辑:

我正在使用一个Web服务器,使用一个unix套接字和sendmsg/recvmsg将套接字文件描述符传递给一个新的服务器进程,而不会丢失任何请求。在用ab测试它时,我发现客户端连接会延迟,apachebench(ab)会显示错误:“apr_poll:指定的超时已过期(70007)”

我怀疑文件描述符的地址发生了更改,这会使打开的连接变得无用,但是确保在每个请求结束时关闭连接并没有什么区别,有几个请求会失败

在套接字级别是否有一些额外的奇怪之处,或者ab只是有点奇怪?还有什么我应该考虑的吗


编辑:使用PHP作为客户端进行请求也会在周期中暂停。

这相当于尝试通过电话线发送电话。这没有任何意义。套接字fd标识连接的端点。如果另一个主机需要连接,它将不得不建立自己的连接。你不能给它一个你的。

如果你有一个主服务器正在监听一个套接字(接受传入连接),并且你有多个工作进程,这是有意义的


您可以选择合适的/空闲的辅助进程(例如,基于每个辅助进程使用的TCP连接数),并将传入连接的描述符从主进程传递给辅助进程。这有助于避免多个工作人员在公共端点上侦听时出现“雷鸣般的群发现象”。

您是将服务器套接字(您调用accept on的套接字)传递给另一个服务器进程,还是将单个连接套接字传递给另一个服务器进程?@user239558传递服务器套接字。我不明白为什么选择此答案。当然,可以传递表示从一个进程到另一个进程的连接的文件描述符。@user239558只能从父进程传递到子进程。