【问题标题】:Apache Web Server ArchitectureApache Web 服务器架构
【发布时间】:2015-08-12 06:38:15
【问题描述】:

我正在寻找 apache web 服务器如何将新请求移交给已经分叉的线程?接受连接的一个线程如何将打开的文件句柄(套接字)传递给另一个已经分叉的正在休眠的线程? (Apache 在 pre-fork 模式下运行)。

【问题讨论】:

    标签: apache


    【解决方案1】:

    在 pre-fork 模式下,没有单线程接受连接。主进程绑定监听套接字,并在分叉时将其传递给工作进程(这里并不神秘,子进程默认继承父进程的文件描述符)。工作进程然后运行调用accept() 的循环。工作人员不需要相互通信,操作系统决定由哪个工作人员处理传入连接。

    【讨论】:

    • 感谢 Joni 的回复。从你的回答中我明白了。您能否分享任何有关 apache 内部工作的有用资源,即它如何在内部工作,pre-fork 和预处理或源代码可能会有所帮助。
    • 您可以在 Apache 源代码中看到 prefork.c 中的实现,但可能并不容易理解。例如,可以有多个侦听套接字,并且可以将工作进程配置为在调用 accept 之前锁定一个互斥体。
    猜你喜欢
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2013-05-04
    • 2012-12-11
    • 2012-10-07
    • 1970-01-01
    • 2017-09-13
    • 2014-07-06
    相关资源
    最近更新 更多