Moo*_*oon 4 connection apache-2.2
几天前我和我的同事交谈时,其中一个提到 apache 为每个连接创建一个线程。
他所说的每个连接到底是什么意思?
假设我有一个包含三个图像的 HTML 文件。当我访问该文件时,我的浏览器会向服务器请求三个图像。所以... apache 是否为每个图像创建一个线程?
“假设我有一个包含三张图片的 HTML 文件。当我访问该文件时,我的浏览器会向服务器请求三张图片。那么……apache 是否为每张图片创建了一个线程?”
是的,如果有两件事是正确的:首先,浏览器必须使用三个单独的连接请求三个图像。其次,这三个请求在服务器端的处理过程中必须重叠。
如果浏览器只使用一个连接,使用 HTTP/1.1 keepalives,那么即使 Apache 为每个连接使用一个线程,仍然只有一个线程。并且即使浏览器确实使用了三个连接,如果浏览器在打开下一个连接之前关闭了每个连接,那么Apache可能能够重新使用同一个线程,而不需要三个不同的线程来处理这三个连接。
Apache 处理多个连接的方式是使用多处理模块 (MPM)。默认 MPM 取决于安装服务器的环境。
两种最常见环境中的默认 MPM 如下:
Unix prefork
Windows mpm_winnt
Run Code Online (Sandbox Code Playgroud)
该prefork的MPM基础是过程,不使用线程。Unix 环境中的替代方案是工作MPM,它使用多个进程和每个进程的多个线程。
该mpm_winnt MPM使用子进程中的1台服务器过程中,1名儿童进程和多线程。
| 归档时间: |
|
| 查看次数: |
6000 次 |
| 最近记录: |