um servidor high-end com um servidor de aplicativos ou vários servidores de aplicativos?

StackOverflow https://stackoverflow.com/questions/2543578

  •  23-09-2019
  •  | 
  •  

Pergunta

Se eu tiver um servidor topo de linha, por exemplo com memória 1T e CPU 8x4core...

trará mais desempenho se eu executar vários servidores de aplicativos (em JVM diferentes) em vez de apenas um servidor de aplicativos?

No App Server irei executar alguns serviços (EAR com beans acionados por mensagens) que trocam mensagens entre si.

aliás, o java 64 bits agora não tem mais limitação de memória?http://java.sun.com/products/hotspot/whitepaper.html#64

Foi útil?

Solução

trará mais desempenho se eu executar vários servidores de aplicativos (em diferentes JVM) em vez de apenas um servidor de aplicativos?

Há várias coisas a levar em consideração:

  • Um único servidor de aplicativos significa um único ponto de falha. Para muitas aplicações, essa não é uma opção e o uso de escala horizontal e vertical é uma configuração comum (ou seja, várias VMs por máquina e várias máquinas). E adicionar mais máquinas é obviamente mais fácil/mais barato, se forem pequenas.

  • Uma pilha grande leva mais tempo para preencher, para que o aplicativo seja mais longo antes que uma coleta de lixo ocorra. No entanto, uma pilha maior também leva mais tempo para compactar e faz com que a coleta de lixo demore mais tempo. Dimensionar a VM geralmente significa encontrar um bom compromisso entre frequência e duração (em outras palavras, você nem sempre deseja dar o máximo de RAM possível a uma VM)

Portanto, para minha experiência, a execução de várias máquinas que hospeda várias JVM é a escolha usual (e geralmente é mais barata que uma besta enorme e oferece mais flexibilidade).

Outras dicas

Há automaticamente um impacto no desempenho quando você precisa fazer comunicações fora do processo, então a questão é se o servidor de aplicativos não escala bem o suficiente para que isso possa compensar.

Como regra básica, o design da JVM permite o uso de qualquer número de CPUs e qualquer quantidade de RAM fornecida pelo sistema operacional.Os limites reais são específicos da implementação da JVM e você precisa ler as especificações com muito cuidado antes de escolher para ver se há algum limite relevante para você.

Dado que você tem uma JVM que pode utilizar o hardware, você precisa de um servidor de aplicativos que possa ser dimensionado adequadamente.Um gargalo comum hoje em dia é a quantidade de solicitações da Web que podem ser processadas por segundo - um servidor moderno deve ser capaz de processar 10.000 solicitações por segundo (consulte http://www.kegel.com/c10k.html) mas nem todos o fazem.

Então, antes de mais nada, identifique suas necessidades mais urgentes (conexões por segundo?uso de memória?largura de banda da rede?) e use isso para identificar a melhor combinação de plataforma + jvm + servidor de aplicativos.Se você tiver necessidades concretas, os fornecedores geralmente ficarão felizes em ajudá-lo a fazer uma venda.

Muito provavelmente você ganhará correndo Múltiplos JVMs com pilhas menores em vez de uma única JVM grande. Há algumas razões para isso:

  1. Pontes menores significam lixo mais curto Coleções

  2. Mais JVMs significa menor concorrência Para recursos internos dentro da JVM, como pools de threads e outro acesso sincronizado.

Quantas JVMs você deve caber nessa caixa depende do que o aplicativo faz. A melhor maneira de determinar isso é configurar um teste de carga Isso simula a carga de produção e observa como o número de solicitações que o sistema pode lidar cresce com o número de JVMs adicionados. Em algum momento, você verá que a adição de mais JVMs não melhora a taxa de transferência. É aí que você deve parar.

No entanto, há outra consideração. É melhor ter várias máquinas físicas em vez de uma única caixa de gordura grande. Isso é confiabilidade. Se esta caixa ficar offline por algum motivo, levará todos os servidores de aplicativos que estão em execução dentro dela. A infraestrutura que executa muitas máquinas físicas menores separadas será menos afetada pela falha de uma única máquina em comparação com uma única caixa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top