Conexión Apache frente a solicitud

Conexión Apache frente a solicitud

Pido disculpas de antemano si esta es una pregunta básica, pero estoy bastante confundido después de leer la documentación de Apache y otros tutoriales.

¿Un único proceso de prefork de Apache atiende todas las solicitudes HTTP para un cliente determinado? Eso es lo que pensé, pero cuando reduzco maxclients a un número bajo, los tiempos de carga de mi página se ralentizan. Esto a pesar de que soy el único cliente en el servidor en cuestión. Esto sugeriría que cada proceso atiende una única solicitud HTTP a la vez, en lugar de atender todas las solicitudes dentro de la ventana TimeOut.

Entonces, si una sola página web requiere 15 solicitudes HTTP para cargarse completamente, ¿necesito 15 procesos de Apache previos a la bifurcación para servirla de manera óptima?

Respuesta1

De la forma en que normalmente pensamos sobre el protocolo HTTP, esto no debería ser un problema.

Los navegadores modernos utilizanmantener vivaconexiones, que sólo pueden transportar una solicitud a la vez; en ese sentido, el uso MaxClients 1no debería tener impacto, ya que cada solicitud en esas conexiones se completa antes de que comience la siguiente.

Sin embargo, esa es otra cosa acerca de los navegadores modernos; utilizan múltiples conexiones. Hoy en día, es posible que obtenga una página HTML que requiera la carga de otros 40 recursos; imágenes, javascript, css. No tiene mucho sentido desde una perspectiva de eficiencia acumularlos todos en un solo archivo para enviarlos a través de una conexión; en cambio, se dividen en un puñado de conexiones (cada una de las cuales sigue siendo un solo archivo) para recuperarse simultáneamente.

No puedo encontrar una buena fuente autorizada de información sobre el comportamiento de cada navegador, perolo que puedo encontrarsugiere que 6 conexiones es aproximadamente normal. Aquí es donde entra en juego la concurrencia de tu servidor; cada una de esas 6 conexiones puede solicitar simultáneamente un recurso, actuando como 6 clientes diferentes desde la perspectiva del servidor.

Respuesta2

mpm_preforkResponderá a una sola conexión. Si desea que Apache proporcione más de una conexión por proceso, deberá utilizar un MPM multiproceso como mpm_worker.

Los navegadores modernos utilizan canalización (múltiples conexiones simultáneas) y mantenimiento (solicitudes serializadas en la misma conexión) para aumentar el rendimiento y la eficiencia de la red y reducir la latencia. Por ejemplo, Mozilla Firefox se puede configurar cambiando network.http.pipeliningy network.http.pipelining.maxrequestsenabout:config

información relacionada