Pourquoi utilisons-nous plusieurs instances de serveur d'applications sur le même serveur
Je pense qu'il y a une bonne raison, mais je ne comprends pas pourquoi, parfois, nous mettons par exemple 5 instances ayant les mêmes applications sur le même serveur physique.
A quelque chose à voir avec une optimisation pour les multi-processeurs de l'architecture?
Le max autorisé limite de ram pour de la JVM ou autre chose?
source d'informationauteur Sebastien Lorber
Vous devez vous connecter pour publier un commentaire.
Hmmm... Après un long moment que je vois cette question encore une fois 🙂
Bien un multiple de la JVM instances sur un seul ordinateur résout beaucoup de problèmes. D'abord laissez-nous faire face à cela: Bien que JDK 1.7 est entrée en image, beaucoup de anciennes des applications ont été développées à l'aide du JDK 1.3 ou 1.4 ou 1.5. Et encore une grande partie de JDK est divisé entre eux.
Maintenant à votre question:
Historiquement, il y a trois questions principales que les architectes système ont adressée par le déploiement de plusieurs machines virtuelles sur une seule boîte:
Garbage collection inefficiencies:
Que les tailles de tas de croître, la collecte des ordures cycles-en particulier pour les grandes collections--tendent à introduire des retards importants dans le traitement, grâce à la monothread GC. Plusieurs machines virtuelles lutter contre cela en permettant aux plus petites tailles de tas en général et en permettant une certaine mesure, de la simultanéité pendant GC cycles (par exemple, avec quatre nœuds, quand on va dans GC, vous avez encore trois autres activement à la transformation).Resource utilization:
Anciennes machines virtuelles ont été incapables d'évoluer efficacement passé quatre Processeurs. La réponse? Exécuter une JVM différente pour chaque 2 Processeurs dans la boîte (kilométrage peut varier selon l'application, bien sûr).64-bit issues:
Anciennes machines virtuelles étaient pas en mesure d'allouer les tailles de tas au-delà de la 32-bits maximum. Encore une fois, plusieurs machines virtuelles vous permettent d'optimiser votre utilisation des ressources.Availability:
Une dernière raison est que, parfois, les gens exécuter plusieurs machines virtuelles sur une seule zone est pour la disponibilité. Même s'il est vrai que cette pratique n'a pas d'adresse défaillances matérielles, il n'adresse un échec dans une seule instance d'un serveur d'application.Prises à partir de ( http://www.theserverside.com/discussions/thread.tss?thread_id=20044 )
J'ai surtout vu weblogic. Voici un lien pour en savoir plus:
http://download.oracle.com/docs/cd/E13222_01/wls/docs92/perform/WLSTuning.html#wp1104298
Espère que cela va vous aider.
Je suppose que vous faites référence à l'application de clustering.
Autant que je sache, la JVM a engendré de très gros tas de la taille ont des problèmes quand il s'agit de la collecte des ordures mais je suis sûr que en jouant avec les GC et les paramètres de l'algorithme vous pouvez ramener les dommages au minimum. De Plus, les applications en cluster n'avez pas de point de défaillance unique. Si un nœud tombe en panne, les autres nœuds peuvent maintenir les clients. C'est une des raisons pourquoi le message "architectures" sont un bon ajustement pour l'évolutivité. Chaque requête est associé à un message qui peut ensuite être repris par n'importe quel nœud dans un cluster.
Un autre point de service de plusieurs requêtes simultanément dans le cas où votre application utilise malheureusement synchronisé mots clés judicieusement. Actuellement nous avons un héritage de l'application qui a beaucoup de l'état partagé (malheureusement) et donc simultanées de traitement de la demande se fait par la ponte d'environ 20 JVM processus avec un dispatching central de l'unité qui effectue l'envoi de travail. 😉
Je vous suggère d'utiliser autour de moins JVM par NUMA région. Si une seule JVM utilise plus d'une NUMA région (souvent un seul PROCESSEUR) les performances peuvent se dégrader de manière significative, en raison d'une augmentation significative du coût d'accès à la mémoire principale d'un autre PROCESSEUR.
De plus, en utilisant plusieurs serveurs peuvent vous permettre de
EDIT: Il pourrait être historique. Il peut y avoir un certain nombre de raisons d'avoir séparé les machines virtuelles dans le passé, mais puisque vous ne savez pas ce qu'ils sont, vous ne savez pas si ils continuent à s'appliquer et il peut être plus simple de laisser les choses comme elles sont.
Une raison supplémentaire d'utiliser plusieurs instance est la facilité d'entretien.
Par exemple si vous avez plusieurs applications différentes pour plusieurs clients de l'avoir séparé les instances du serveur d'applications pour chaque application peut rendre la vie un peu plus facile quand vous avez à faire un serveur d'applications redémarrage dans un communiqué.
Supposons que vous avez une moyenne de configuration de l'hôte et installé instance unique de la web/serveur d'application. Maintenant votre application devient de plus en plus populaire et le nombre de visites augmente 2 fois. Ce que vous faites maintenant ?
D'en ajouter un serveur physique de même configuration et installation de l'application et de l'équilibre de la charge de ces deux hôtes.
Ce n'est pas la fin de vie de votre application. Votre demande va continuer à devenir de plus en plus populaire et donc la nécessité de l'échelle. Quelle va être votre stratégie ?
L'option qui vous vont bien ?
Apparemment, il vient que la décision n'est pas très facile. Et dans la plupart des cas, il est plus rentable d'avoir une machine plus puissante.