¿Se crea un nuevo hilo en el back-end cada vez que un usuario inicia sesión en una aplicación o sitio web?

No, no se crea un nuevo hilo para cada usuario conectado. Cuando alguien carga un sitio web o abre una aplicación, esa aplicación (el cliente) puede necesitar cierta información del servidor a veces, pero no siempre pedirá datos. Si hay un hilo para cada usuario que usa la aplicación, todo ese tiempo cuando el cliente no necesita información está desperdiciando ese hilo.

Toma Facebook como ejemplo. Cuando abres la página de Facebook, ¿qué necesita cargar? Tal vez alguna información sobre su perfil, sus amigos que están en Messenger y su feed. ¡Después de todo lo que se ha tomado del servidor, el cliente ya no necesita el servidor! No hasta que la página cambie, o actualicen el feed, o hasta que ocurra alguna otra acción.

Algunas estrategias de servidor (como Spring) crean un nuevo hilo para cada solicitud, mientras que otras (como node.js) ejecutan el servidor enitre en un hilo todo el tiempo.

Cuando se trata de la asignación de recursos, un usuario que inicia sesión en un sitio web es una solicitud muy probable. Si un servidor necesita manejar varias solicitudes “simultáneamente”, cada una de estas solicitudes se asignará a un solo hilo (o proceso hijo) .

Crear subprocesos para cada solicitud no sería muy eficiente, por lo que la mayoría de los servidores administran un grupo de subprocesos. Cuando llega una solicitud, el servidor recupera un subproceso del grupo para manejarlo. Después de manejar la solicitud, el subproceso se devuelve al grupo para que pueda asignarse a otra solicitud más adelante. Por supuesto, hay algunas variaciones de este enfoque en función del lenguaje de desarrollo del servidor.

La información de estado sobre el usuario conectado no está asociada al contexto del hilo (nuevamente, eso sería muy poco eficiente). Cuando un usuario “inicia sesión”, el servidor crea un token de identificación de sesión y lo envía de vuelta al cliente (generalmente usando cookies de sesión). El cliente devuelve este ID de sesión a las siguientes solicitudes y así es como el servidor sabe que proviene del mismo usuario que inició sesión hace algún tiempo.

Entonces, cuando un usuario inicia sesión y luego hace un par de solicitudes, puede estar usando el mismo hilo o diferentes para cada golpe. Todo depende de cómo el servidor gestione su grupo de subprocesos y cuántos usuarios estén accediendo al servidor al mismo tiempo.

No Usualmente.

Cuando se inicia un servidor web, generalmente está configurado para un número determinado de conexiones simultáneas. Por lo tanto, se reutilizan debido a la naturaleza de cómo funciona HTTP.

Cada conexión solo dura una fracción de segundo. Por lo tanto, miles de personas pueden usar un número limitado.

Esta es la razón por la que seleccionar un enlace generalmente toma un segundo antes de que se muestre la nueva página.

El único momento en que es obligatorio crear un nuevo hilo (o proceso) es cuando la conexión TCP se mantiene para uso a largo plazo, como un inicio de sesión ssh en un servidor remoto. Cada conexión ssh obtiene una (y solo una) conexión TCP; y esa conexión dura hasta que el usuario se desconecta (ya sea deliberadamente o por inactividad).

Depende del idioma. Por ejemplo, PHP se crea un nuevo hilo por solicitud. En node.js todo se maneja en un solo hilo, incluso miles de solicitudes concurrentes.