Medi o número máximo de casos que o servidor web (Apache) pode tratar simultaneamente utilizando um servidor de aluguer VPS.


Data de Publicação:31 de Dezembro de 2020.



INFOMARTION > Medi o número máximo de casos que o servidor web (Apache) pode tratar simultaneamente utilizando um servidor de aluguer VPS.

Visão geral.

Medi o número máximo de casos que o servidor web (Apache) pode processar ao mesmo tempo, e gostaria de escrever sobre os resultados. Estávamos curiosos sobre o número máximo de pedidos que podiam ser atendidos, por isso realizámos um inquérito. Use isto como referência para seleccionar as especificações do servidor VPS.

Desta vez, as medições foram efectuadas apenas na WEB (Apache), mas por favor consulte o artigo abaixo para medições nos servidores WEB/AP (Apache e Tomcat).

Medi o número máximo de servidores WEB/AP (Apache e Tomcat) que podem tratar ao mesmo tempo, utilizando um servidor de aluguer VPS.

Tabela de Conteúdos

  1. medição
  2. Detalhes dos resultados das medições
  3. resumo

1. medição

1-1. Ambiente de medição

O seguinte é o ambiente em que as medições serão feitas.

■Informação sobre o servidor de aluguer

CPU2core
memory1GB
SSD50GB

■Informação do servidor

OSCentOS 7.4 64bit
Servidor WebApache HTTP Server 2.4.41

1-2. Método de medição

Gostaria de medir isto usando o JMeter. O JMeter é uma ferramenta de medição de carga que funciona em Java. A ferramenta permite que um grande número de pedidos seja lançado ao mesmo tempo. Gostaríamos de aumentar gradualmente o número de pedidos simultâneos utilizando JMeter e aumentar a carga até que o processamento não possa mais ser tratado.

As condições específicas incluem.

  • intervalo de pedido・・・5 seg.
  • Número de pedidos simultâneos・・・10 casos.(As medições aumentaram gradualmente em 10 casos cada.)
  • Tempo de medição・・・60 segundos.

O tempo de medição é de "60 segundos" e o intervalo de solicitação de "5 segundos", pelo que se pretende aceder ao sistema 12 vezes (60÷5) repetidamente.

1-3. resultado da medição

No final, muitas pessoas estão interessadas na conclusão das especificações com que o servidor pode lidar e quanto pode lidar, por isso gostaria de declarar a conclusão primeiro.

CPU:2core
memory:1GB
SSD:50GB
Podem ser processados até 120 pedidos simultâneos.

Os resultados desta medição mostraram o acima exposto. Os resultados acima referidos sugerem que se pode inferir o seguinte. Tente usar isto como um critério ao escolher as especificações do servidor.

CPU:1core
memory:512MB
SSD:25GB
Podem ser processados até 60 pedidos simultâneos.
CPU:2core
memory:1GB
SSD:50GB
Podem ser processados até 120 pedidos simultâneos.
CPU:3core
memory:2GB
SSD:100GB
Podem ser processados até 240 pedidos simultâneos.

Mesmo com especificações de "CPU: 1core", "memória: 512MB" e "SSD: 25GB", descobriu-se que um sistema de cerca de 60 pessoas podia funcionar sem problemas.

2. Detalhes dos resultados das medições

Descrevemos os resultados de medição mais cedo, mas se estiver interessado no tipo de resultados que descrevemos, por favor verifique também os detalhes dos resultados de medição que serão descritos no futuro.

2-1. Medidas do servidor WEB (Apache)

Pedidos repetidos foram lançados contra páginas criadas em HTML. Esta é uma página simples, sem processamento PHP ou complexidade JavaScript.

As medições mostraram os seguintes resultados.

  • Para 10 pedidos simultâneos⇒OK
  • Para 20 pedidos simultâneos⇒OK
  • Para 30 pedidos simultâneos⇒OK
  • Para 40 pedidos simultâneos⇒OK
  • Para 50 pedidos simultâneos⇒OK
  • Para 60 pedidos simultâneos⇒OK
  • Para 70 pedidos simultâneos⇒OK
  • Para 80 pedidos simultâneos⇒OK
  • Para 90 pedidos simultâneos⇒OK
  • Para 100 pedidos simultâneos⇒OK
  • 110 pedidos simultâneos⇒OK
  • Para 120 pedidos simultâneos⇒OK
  • Para 130 pedidos simultâneos⇒NG

O erro ocorreu no 130º caso. A causa foi um erro de ligação ao Apache. O estado do servidor, nesta altura, era o seguinte.

  • Utilização da CPU・・・26%
  • taxa de utilização de memória・・・100%

Uma completa falta de memória foi o engarrafamento.

Para o ligeiramente mais totó, a configuração do Módulo Multi-Processamento Apache (MPM) é a seguinte. O MPM é simplesmente explicado como a definição de quanto Apache é permitido processar em paralelo.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

O cenário de interesse é "250" para "MaxRequestWorkers". Este é um cenário para o número máximo de casos que o Apache pode processar ao mesmo tempo. 250", pelo que 250 casos podiam ser processados em paralelo no máximo, mas olhando para a utilização de memória, foram utilizados cerca de 8 MB de memória por caso.

Parecia estar a utilizar 960 MB de memória (8M x 120 processos) e o valor de configuração era de '250', mas parecia que não era possível criar mais de '120' processos.
※A memória do servidor está quase até ao seu limite de 1G.

Quando o servidor está realmente a funcionar, se PHP e Java também estiverem incluídos, o limite é de cerca de 100 casos, e se houver espaço, 80 casos podem ser processados simultaneamente em paralelo.

Quando apenas o Apache está instalado e a funcionar, com especificações "CPU: 2core, memória: 1GB, SSD: 50GB", o número de acessos simultâneos "120" foi considerado como sendo o limite.

2-2. consideração

A partir daqui torna-se uma consideração, mas como a memória é o gargalo, se a memória for alterada, o número de processos que podem ser processados concomitantemente também aumentará.

【Presente.(memory1GB)】

  • memory:1GB
  • Número de fios Apache:120 casos
  • Consumo de memória por fio no Apache.:8MB
  • Consumo de memória Apache:960MB(120 casos×8MB)

【após a mudança(memory2GB)】

  • memory:2GB
  • Número de fios Apache:240 casos.
  • Consumo de memória por fio no Apache.:8MB
  • Consumo de memória Apache:1920MB(240 casos.×8MB)

Se a memória for aumentada para 2 GB, poderá ser possível duplicar o número de casos para cerca de 240 ao mesmo tempo. Se a memória for aumentada para 3GB, parece que se pode fazer mais processamento simultâneo, mas o "MaxRequestWorkers (número máximo de casos a serem processados simultaneamente)" do MPM do Apache é "250", pelo que também será necessário afinar aqui se a memória for aumentada ainda mais. Inversamente, se a memória fosse reduzida para metade, seria o seguinte.

【após a mudança(memory512GB)】

  • memory:512GB
  • Número de fios Apache:60 casos.
  • Consumo de memória por fio no Apache.:8MB
  • Consumo de memória Apache:480MB(60 casos.×8MB)

3. resumo

Medimos o número máximo de casos que o servidor web (Apache) pode processar ao mesmo tempo. Foi descoberto que um sistema de cerca de 60 pessoas podia ser operado sem problemas com "CPU: 1core", "memória: 512MB" e "SSD: 25GB".

O inquérito baseia-se no pressuposto de que nenhum outro software está a funcionar com um desempenho marginal. Recomenda-se a escolha de uma especificação com um pouco de margem de manobra, já que se trata de um valor marginal.

Obrigado por ter observado até ao fim.