Escalar o Apache / PHP é tão simples quanto maximizar o número de núcleos da CPU?

1

Eu tenho um servidor Linux / Debian com CPU Intel i7 com 4 núcleos e 8 threads. Quando eu executo o meu trabalho Apache / PHP, ele usa um thread, e quando executo trabalhos em Apache / PHP simultâneos, cada um usa seu próprio thread.

Então, se eu quero estar preparado para tráfego alto, é simplesmente uma questão de maximizar o número de núcleos (escolhendo outras CPUs) para poder lidar com mais trabalhos simultâneos, desde que tenha memória suficiente e que o banco de dados / filesystem não representa desafios extras?

Eu tentei executar 8 e 10 trabalhos simultaneamente e ele usou todos os threads e a utilização da CPU foi na maior parte 100% (mas correu perfeitamente), então parece que a teoria não está completamente errada - mas há algo mais que poderia pensamento linear?

Alternativamente, eu poderia ir com um sistema de carga balanceada com vários servidores, mas gostaria de saber até onde posso chegar com um único servidor.

PS. O Apache / PHP está usando o mod_php com segurança de thread desativada, portanto ele usa o Prefork MPM. Não tenho certeza se ouso usar o Worker MPM porque não tenho certeza sobre segurança de threads ...

PSS. Além disso, não estou necessariamente procurando por um melhor desempenho, principalmente apenas para lidar com mais tráfego / mais trabalhos simultâneos.

    
por TheStoryCoder 21.09.2018 / 17:50

2 respostas

1

A partir do que você descreve (100% de utilização da CPU), seu aplicativo parece estar ligado à CPU. Portanto, adicionar mais núcleos de CPU ou mudar para uma máquina com núcleos mais rápidos provavelmente melhorará seu desempenho.

Muitos provedores de nuvem cobram apenas alguns centavos por hora para alugar máquinas virtuais poderosas com muitos núcleos de CPU e muita memória RAM. Basta ir em frente e testar em 16 ou 32 núcleos para descobrir como seu desempenho é dimensionado com o número de CPUs / núcleos.

E sim, eu recomendo aumentar o número de núcleos no seu sistema, antes de aumentar o número de sistemas.

    
por 22.09.2018 / 16:20
1

Sempre existe um limite de escalabilidade e pode ser qualquer componente do sistema.

Se você teve um bom aumento linear na taxa de transferência, e o tempo de resposta não foi tão ruim, a CPU não é atualmente o seu fator limitante. Continue testando com mais CPUs. Pense grande, você pode alugar VMs muito grandes a partir de várias nuvens. Você pode começar a ver efeitos NUMA quando a VM for maior que um soquete de CPU.

Idealmente, a taxa de transferência simplesmente pára de aumentar porque atinge algum outro gargalo, mas também pode se degradar rapidamente. A única maneira de descobrir é testar.

Há motivos de não escalabilidade para usar vários back-ends de balanceamento de carga, incluindo alta disponibilidade.

    
por 22.09.2018 / 15:16