Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

Negocios + processamento de dados + php

Recommended Posts

Olá pessoal, seguinte eu possuo uma duvida

Eu tenho um servidor web com as seguintes caracteristicas:

  • 512 Mb de memoria
  • 1 core cpu
  • 20 gd de ssd
  • 1 tb de transferencia

Vamos supor que temos um projeto bem simples em php (esse não é o original, mas cabe muito bem neste exemplo), aonde o usuario entre em uma determinada pagina e o sistema faça uma contagem de 0 até 3 milhoes:

for ($i = 0; $i <= 3000000; $i++) {
    echo "Numero atual: ".$i;
}

é claro que isso consome bastante memoria do servidor e processamento, neste caso eu vou impor a cada usuario que entra na minha plataforma, um limite de processamento, vamos colocar um limite de 2 MB para cada usuario:

ini_set('memory_limit', '2095M'); // 512MB menos 2 MB

Acredito eu que 2 MB já são mais do que o suficiente para fazer aquele loop sem muitos problemas de demora, não?

Então vamos lá, quantos usuarios simultaneos minha plataforma teria que ter para um ultimo usuario sentir uma demora?

256 usuários simultaneos chegariam no limite da minha memoria, e se um usuario a mais entrar, eu não sei o que poderia acontecer.

Tambem nao sei se com a entrada de um novo usuario, o php iria reformular o memory_limit de uma forma que todos os usuarios usem 1 MB de memoria limite para caber mais um usuario e assim sucessivamente ate chegar o ponto em que cada usuario use 1kb da memoria por causa dos tantos usuarios que estão usando. é assim?

Alem da memoria acredito que eu tenha que me preocupar com o processamento da CPU, fazendo uma pesquisa na internet achei este topico

Lá ele diz que: Um pequeno sono vai reduzir drasticamente o uso da CPU e complementa, 1 segundo para CPU é um monte de tempo para fazer outra tarefa. Sabendo disso ele recomendou o uso de sleep()/usleep()

Para isso vamos dar um pequeno sono de 0.5 segundos a cada loop do nosso foreach:

for ($i = 0; $i <= 3000000; $i++) {
    echo "Numero atual: ".$i;
    usleep(500000);
}

Acredito que isso funcione e um sono de 0.5 segundos não vá fazer muita diferença na hora do processamento.

Perfeito, agora chegou a hora de saber:

  • Como eu posso verificar o tanto de memoria que o php esta usando para eu ter um conhecimento e saber a hora que eu tenho que aumentar a estrutura do servidor?
  • Devo ficar de olho no processamento da cpu? devo utilizar como metrica para saber a hora de trocar de estrutura?
  • Quais outros resultados que voces acham que eu deveria ficar atento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Memória baixa é arriscado, 2mb é muito arriscado. Aplicações que usam algum framework partem de 10mb em uso.

PHP não faz swap, no momento que estourar a memória, é erro do apache e vai "explodir" na tela.

Logo, o PHP não faz alocação alguma de memória. É o especificado, se precisar mais, vai dar erro.

Acho mais provável você conversar na área de infraestrutura, ou com algum provedor. Visto que problemas de hardware não são preocupações que um desenvolvedor PHP deva se focar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.