Para leitura geral, consulte:
Como o apache distribui solicitações simultâneas entre os segmentos?
Para uma configuração multithread, existe um conjunto de threads pré-criados. Quando uma nova solicitação chega, ela é transferida para um dos threads disponíveis no pool para ser processada. Quando terminar, o segmento volta para o pool.
Como o apache distribui solicitações simultâneas entre CPUs?
Não, onde um encadeamento é executado em qualquer momento específico é determinado pelo sistema operacional. Threads não estão ligados a um processador específico pelo Apache, então a execução pode se mover.
Cada solicitação gera um segmento separado?
Para solicitações da web tratadas pelo Apache, a resposta é não.
Posso especificar manualmente um determinado aplicativo para ser executado em uma CPU separada?
Existem maneiras de definir a afinidade do processador para vincular processos a processadores, mas a maneira como você faz isso depende do sistema. O próprio Apache não oferece, até onde eu sei, qualquer mecanismo de configuração para fazer isso sozinho.
Como vários threads leram / gravam no mesmo banco de dados?
Com cuidado. Normalmente, o processo do servidor de banco de dados preocupa-se com tudo isso e, portanto, você não precisa se preocupar. Em um cliente, você precisa ter certeza de que cada thread esteja usando sua própria conexão com o banco de dados, criando um para cada solicitação, ou se você tiver um pool de conexões de banco de dados e segmentos conecte-os ao pool quando necessário e os retorne quando feito.
Observe que isso pressupõe um banco de dados no qual o acesso é mediado por meio de um processo do servidor. Se você estiver usando um banco de dados baseado em sistema de arquivos, a biblioteca cliente do banco de dados deve garantir que o acesso multithread seja seguro.
O que acontece se eu tiver mais de uma dessas máquinas, por exemplo, executando no EC2 e tendo mais de uma instância? Como as solicitações são distribuídas?
Você precisaria de algum tipo de balanceador de carga front-end para distribuir solicitações. Isso pode ser um balanceador de carga adequado ou você pode usar um front end nginx como proxy.