🌍 Redes de Computadores ‱ Sistemas Operacionais ‱ Servidores Web

Como um Processo Servidor consegue atender milhares de clientes ao mesmo tempo?

Quando vocĂȘ abre um site, existe um processo em execução esperando por sua conexĂŁo. Esse mesmo processo precisa atender usuĂĄrios espalhados pelo mundo inteiro, simultaneamente, de maneira rĂĄpida, segura e organizada.

⬇

Tudo começa com um Ășnico processo servidor

⚙ Processo em execução

O servidor web (Apache, Nginx, IIS, etc.) inicia um processo que permanece executando continuamente na memória do sistema operacional aguardando conexÔes.

🌐 Socket TCP

Esse processo cria um socket e fica escutando uma porta TCP (normalmente 80 ou 443), esperando que clientes iniciem conexÔes.

👂 Estado de escuta

Durante praticamente toda sua vida Ăștil o servidor permanece bloqueado na chamada accept(), aguardando novas conexĂ”es.

O caminho de uma requisição HTTP

đŸ‘€

Cliente
➜
🌍

Internet
➜
📡

Socket TCP
➜
⚙

Processo Servidor
➜
📄

Resposta HTTP

Mas como vĂĄrios clientes sĂŁo atendidos ao mesmo tempo?

đŸ§” Threads

Ao receber uma conexĂŁo, o servidor pode criar uma nova thread. Cada thread atende um cliente independentemente das demais.

📩 Processos Filhos

Alguns servidores criam processos independentes para tratar diferentes clientes, aumentando isolamento e segurança.

⚡ I/O Assíncrona

Servidores modernos utilizam eventos e chamadas nĂŁo bloqueantes, permitindo que um Ășnico processo administre milhares de conexĂ”es.

🔄 Pool de Workers

Em vez de criar novas threads continuamente, o servidor mantém um conjunto de workers prontos para receber novas conexÔes.

O que acontece internamente?

  1. O processo servidor cria um socket.
  2. Liga o socket Ă  porta TCP (bind).
  3. Entra em modo de escuta (listen).
  4. Fica aguardando conexÔes (accept).
  5. Quando um cliente conecta, cria uma thread, um processo ou registra o evento.
  6. LĂȘ a requisição HTTP.
  7. Processa arquivos eståticos ou executa aplicaçÔes (PHP, Python, Java, Node.js etc.).
  8. Envia a resposta HTTP.
  9. Fecha ou reutiliza a conexĂŁo.
  10. Volta imediatamente a esperar novas conexÔes.

Representação simplificada do processo servidor


               INTERNET

      Cliente A
           │
      Cliente B
           │
      Cliente C
           │
      Cliente D
           │
           ▌

    +--------------------+
    | Socket TCP :80     |
    +--------------------+
              │
         accept()
              │
     +-------------------+
     | Processo Servidor |
     +-------------------+
      │      │      │
      │      │      │
      ▌      ▌      ▌
 Worker1 Worker2 Worker3
      │      │      │
      ▌      ▌      ▌
 Resposta Resposta Resposta

Por que isso escala para milhÔes de usuårios?

🚀 ConcorrĂȘncia

Vårias conexÔes podem estar abertas simultaneamente sem que uma bloqueie a outra.

🧠 Escalonamento do SO

O sistema operacional distribui threads e processos entre os nĂșcleos da CPU.

🌎 Clientes independentes

Cada navegador possui seu prĂłprio socket TCP. O servidor diferencia todos utilizando pares IP:Porta.

⚡ EficiĂȘncia

Servidores modernos conseguem manter dezenas ou centenas de milhares de conexÔes abertas simultaneamente.