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.


Data de Publicação:1 de Janeiro de 2021.



INFOMARTION > 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.

Visão geral.

Medi o número máximo de casos que os servidores WEB/AP (Apache e Tomcat) podem 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 nos servidores WEB/AP (Apache e Tomcat), mas por favor consulte o artigo abaixo apenas para medições na WEB (Apache).

Medi o número máximo de casos que o servidor web (Apache) pode tratar simultaneamente 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
Servidor APApache Tomcat 9.0.27
Servidor DBPostgreSQL 10.2
JavaOpenJDK 11

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é 80 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é 20 pedidos simultâneos.
CPU:2core
memory:1GB
SSD:50GB
Podem ser processados até 80 pedidos simultâneos
CPU:3core
memory:2GB
SSD:100GB
Podem ser processados até 200 pedidos simultâneos.

Verificou-se que um sistema com um tamanho de cerca de 20 utilizadores funcionaria sem problemas com "CPU: 1core", "memória: 512MB" e "SSD: 25GB".

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/AP (Apache, Tomcat)

O pedido foi atirado para um cenário em que o utilizador faz o login a partir do ecrã de login e, após o login, é exibido o ecrã da lista. A propósito, o ecrã é construído utilizando a estrutura da Primavera, incluindo a função de autenticação.

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⇒NG

O erro ocorreu no 90º 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%
  • utilização da 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.

Java parecia estar a usar 320MB de memória (248M para pilha e 72M para metaspace) e Apache 640MB de memória (8M x 80 processos), e embora o valor de configuração MPM do Apache seja '250', parecia que não podia criar mais do que '80' processos.
※O servidor tem 1G de memória, pelo que a memória total para Apache e Java é de 960MB, o que está quase no limite superior.

O servidor AP (lado Java) estava a funcionar bem, pelo que o ponto de estrangulamento era o servidor WEB (Apache).

Quando Apache e Tomcat estão instalados e a funcionar, descobrimos que com as especificações "CPU: 2core, memória: 1GB, SSD: 50GB", o número de acessos simultâneos "80" é o limite.(O pressuposto é que as configurações de memória para Java são 248M para heap e 72M para metaspace.)

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 aumentará.

【Presente.(memory1GB)】

  • memory:1GB
  • Número de fios Apache:80 casos.
  • Consumo de memória por fio no Apache.:8MB
  • Consumo de memória Apache:640MB(80 casos.×8MB)
  • Consumo de memória Tomcat:320MB(248m para HEAP.、72m para metaspace.)
  • Consumo de memória do Apache+Tomcat:960MB

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

  • memory:2GB
  • Número de fios Apache:200 casos
  • Consumo de memória por fio no Apache.:8MB
  • Consumo de memória Apache:1600MB(200 casos×8MB)
  • Consumo de memória Tomcat:320MB(248m para HEAP.、72m para metaspace.)
  • Consumo de memória do Apache+Tomcat:1920MB

Com 2 GB de memória, pode ser possível processar 200 casos simultaneamente. 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. A afinação da memória Java também pode ser necessária. 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:20 casos
  • Consumo de memória por fio no Apache.:8MB
  • Consumo de memória Apache:160MB(20 casos×8MB)
  • Consumo de memória Tomcat:320MB(248m para HEAP.、72m para metaspace.)
  • Consumo de memória do Apache+Tomcat:480MB

3. resumo

São descritos os resultados da medição do número máximo de casos que os servidores WEB/AP (Apache e Tomcat) podem processar ao mesmo tempo. Verificou-se que um sistema com um tamanho de cerca de 20 utilizadores funcionaria 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.