un server di fascia alta con un Application Server o più server applicazioni?

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

  •  23-09-2019
  •  | 
  •  

Domanda

Se ho un server di fascia alta, ad esempio con 1T memoria e CPU 8x4core ...

sarà lo porterà più prestazioni se corro multipla App Server (su diversi JVM) piuttosto che uno solo App Server?

Su App Server correrò alcuni servizi (EAR messaggi whith Driven Beans), che scambio di messaggi tra loro.

A proposito, ha Java a 64 bit ora alcuna limitazione di memoria più? http://java.sun.com/products/hotspot/whitepaper.html# 64

È stato utile?

Soluzione

  

sarà lo porterà più prestazioni se corro multipla App Server (su diversi JVM) piuttosto che uno solo App Server?

Ci sono diverse cose da prendere in considerazione:

  • Un unico application server si intende un singolo punto di errore. Per molte applicazioni, questa non è un'opzione e utilizzando scala orizzontale e verticale è una configurazione comune (cioè più VM per macchina e macchine multiple). E aggiungendo più macchine è ovviamente più facile / più conveniente se sono piccoli.

  • Un grande mucchio richiede più tempo per compilare in modo l'applicazione viene eseguita più prima che si verifichi una garbage collection. Tuttavia, un cumulo più grande prende anche più tempo per compattare e provoca la raccolta dei rifiuti a richiedere più tempo. Dimensionamento della VM di solito significa trovare un buon compromesso tra la frequenza e la durata (in altre parole, non sempre si vuole dare quanta più RAM possibile una VM)

Quindi, per la mia esperienza, l'esecuzione di più macchine che ospitano JVM multipla è la solita scelta (e di solito è più economico di un enorme bestia e ti dà più flessibilità).

Altri suggerimenti

Non è automaticamente un calo di prestazioni quando è necessario fare comunicazione out-of-process, quindi la domanda è se il server di applicazione non si adatta abbastanza bene quindi questo può pagare.

Come regola di base del pollice del disegno JVM permette l'utilizzo di un qualsiasi numero di CPU e qualsiasi quantità di RAM del sistema operativo fornisce. I limiti attuali sono implementazione JVM specifici, ed è necessario leggere le specifiche molto attentamente prima di scegliere per vedere se ci sono dei limiti rilevanti per voi.

Dato si dispone di una JVM che può utilizzare l'hardware, è quindi necessario un application server che può scalare in modo appropriato. Un collo di bottiglia comune in questi giorni è la quantità di richieste web che possono essere elaborati al secondo - un server moderno dovrebbe essere in grado di elaborare le 10000 richieste al secondo (vedi http://www.kegel.com/c10k.html ), ma non tutti lo fanno.

Quindi, prima di tutto identificare i vostri bisogni più urgenti (connessioni al secondo? Utilizzo della memoria? Larghezza di banda?) E l'uso che per identificare la migliore piattaforma + combinazione di server JVM + app. Se si dispone di bisogni concreti, i venditori di solito lieto di aiutarvi a fare una vendita.

Molto probabilmente si otterrà eseguendo più JVM con cumuli più piccoli , invece di un unico grande JVM. C'è una coppia di ragioni per questo:

  1. mucchi più piccoli significa spazzatura più breve collezioni

  2. Più JVMs mezzi minore concorrenza per le risorse interne all'interno JVM come piscine discussione e altre accesso sincronizzate.

Quanti JVM si dovrebbe inserirsi in quella scatola dipende ciò che l'applicazione fa. Il modo migliore per determinare questo è quello di creare un test carico che simula carico di produzione e osservare come il numero di richieste del sistema può gestire cresce con il numero di JVM aggiunti. Ad un certo punto si vedrà che l'aggiunta di più JVM non migliora il throughput. Ecco dove si dovrebbe smettere.

Tuttavia, v'è un'altra considerazione. E 'meglio avere , piuttosto che un unico grande contenitore di grasso più macchine fisiche. Questo è l'affidabilità. Se questa casella di andare offline per qualche motivo, ci vorrà con sé tutti i server di applicazioni che sono in esecuzione al suo interno. L'infrastruttura in esecuzione molti separano macchine fisiche più piccole sta per essere meno interessata dal guasto di una singola macchina rispetto a una singola casella.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top