un serveur haut de gamme avec un serveur d'applications ou plusieurs serveurs d'application?

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

  •  23-09-2019
  •  | 
  •  

Question

Si j'ai un serveur haut de gamme, par exemple avec la mémoire 1T et CPU 8x4core ...

faut-il apporter plus de performance si j'exécuter plusieurs applications serveur (sur différents JVM) plutôt qu'un seul serveur d'applications?

Sur le serveur App Je courrai certains services (EAR message cinque haricots) qui échangent entraîné un message avec l'autre.

BTW, a java 64bit maintenant pas de limitation de la mémoire plus? http://java.sun.com/products/hotspot/whitepaper.html# 64

Était-ce utile?

La solution

  

faut-il apporter plus de performance si j'exécuter plusieurs applications serveur (sur différents JVM) plutôt qu'un seul serveur d'applications?

Il y a plusieurs choses à prendre en compte:

  • Un serveur d'application unique moyen d'un point unique de défaillance. Pour de nombreuses applications, ce n'est pas une option et en utilisant l'échelle horizontale et verticale est une configuration commune (à savoir multiples machines virtuelles par machine et plusieurs machines). Et l'ajout de machines est évidemment plus facile / moins cher si elles sont petites.

  • Un grand tas prend plus de temps pour remplir pour que l'application fonctionne plus avant une collecte des ordures se produit. Cependant, un tas plus grand prend aussi plus de temps à compacter et provoque la collecte des ordures à prendre plus de temps. Dimensionnement de la machine virtuelle signifie généralement trouver un bon compromis entre la fréquence et la durée (en d'autres termes, vous ne voulez pas toujours de donner autant de RAM que possible à une machine virtuelle)

Alors, mon expérience, l'exécution de plusieurs machines d'hébergement multiple machine virtuelle Java est le choix habituel (et est généralement moins cher qu'une bête énorme et vous donne plus de flexibilité).

Autres conseils

Il est automatiquement un coup de performance lorsque vous devez faire des communications hors processus, la question est de savoir si le serveur d'application ne peut payer cela assez bien l'échelle de pas.

En règle de base de la conception de machine virtuelle Java permet l'utilisation d'un certain nombre de CPU et une quantité de mémoire vive du système d'exploitation fournit. Les limites actuelles sont la mise en œuvre JVM spécifique, et vous avez besoin de lire les spécifications très soigneusement avant de choisir de voir s'il y a des limites à vous pertinentes.

Étant donné que vous avez une machine virtuelle Java qui peut utiliser le matériel, vous avez besoin alors un serveur d'application qui peut évoluer de façon appropriée. Un goulot d'étranglement commun ces jours-ci est la quantité de requêtes Web qui peuvent être traitées par seconde - un serveur moderne doit être en mesure de traiter 10000 demandes par seconde (voir http://www.kegel.com/c10k.html ), mais pas tous.

Alors, tout d'abord identifier vos besoins les plus pressants (connexions par seconde? Utilisation de la mémoire? De la bande passante réseau?) Et l'utiliser pour identifier la meilleure plate-forme + + app jvm combinaison de serveur. Si vous avez des besoins concrets, les vendeurs seront généralement heureux de vous aider à faire une vente.

Très probablement, vous gagnerez en exécutant plusieurs JVMs avec des tas plus petits au lieu d'une seule grande machine virtuelle Java. Il y a deux raisons à cela:

  1. tas plus petits signifie garbage plus court collections

  2. Plus de moyens JVM moindre concurrence pour les ressources internes à l'intérieur JVM telles que les pools de threads et d'autres accès synchronisé.

Combien de JVMs vous devez entrer dans cette boîte dépend de ce que l'application fait. La meilleure façon de le savoir est de mettre en place un test de charge qui simule la charge de production et d'observer comment le nombre de demandes, le système peut gérer augmente avec le nombre de JVMs ajouté. À un certain moment, vous verrez que l'ajout de JVMs n'améliore pas le débit. C'est là que vous devriez arrêter.

Et pourtant, il y a une autre considération. Il est préférable d'avoir plusieurs machines physiques plutôt qu'une seule grosse boîte de graisse. Ceci est la fiabilité. cette case devrait aller en ligne pour une raison quelconque, il faudra avec elle tous les serveurs d'applications qui sont en cours d'exécution à l'intérieur. L'infrastructure en cours d'exécution beaucoup plus petites machines physiques séparés va être moins touchés par la défaillance d'une seule machine par rapport à une seule boîte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top