one high-end server with one Application Server or multiple Application Servers?

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

  •  23-09-2019
  •  | 
  •  

문제

If I have a high-end server, for example with 1T memory and 8x4core CPU...

will it bring more performance if I run multiple App Server (on different JVM) rather than just one App Server?

On App Server I will run some services (EAR whith message driven beans) which exchange message with each other.

btw, has java 64bit now no memory limitation any more? http://java.sun.com/products/hotspot/whitepaper.html#64

도움이 되었습니까?

해결책

will it bring more performance if I run multiple App Server (on different JVM) rather than just one App Server?

There are several things to take into account:

  • A single app server means a single point of failure. For many applications, this is not an option and using horizontal and vertical scaling is a common configuration (i.e. multiple VMs per machine and multiple machines). And adding more machines is obviously easier/cheaper if they are small.

  • A large heap takes longer to fill so the application runs longer before a garbage collection occurs. However, a larger heap also takes longer to compact and causes garbage collection to take longer. Sizing the VM usually means finding a good compromise between frequency and duration (in other words, you don't always want to give as much RAM as possible to one VM)

So, to my experience, running multiple machines hosting multiple JVM is the usual choice (and is usually cheaper than a huge beast and gives you more flexibility).

다른 팁

그것은 확실히 버그가 아니며, 나는이 행동에서 이상하거나 잘못된 것을 보지 못합니다.

예 / 아니오 필드는 내부적으로 비트 / 부울로 저장됩니다.따라서 값을 "예"라는 문자열을 비교하려는 첫 번째 시도가 올바르게 평가되어 false로 평가되고 "일부 다른 텍스트 인쇄"가 반환됩니다.

이 수식을 사용하는 경우 부울 비교가 수행되므로 예상 결과를 제공합니다.

=IF([YesNo],"Print Some Text","Print some other text")
.

Most likely you will gain by running multiple JVMs with smaller heaps instead of a single large JVM. There is a couple of reasons for this:

  1. Smaller heaps mean shorter garbage collections

  2. More JVMs means lesser competition for internal resources inside JVM such as thread pools and other synchronized access.

How many JVMs you should fit into that box depends on what the application does. The best way to determine this is to set up a load test that simulates production load and observe how the number of requests the system can handle grows with the number of added JVMs. At some point you will see that adding more JVMs does not improve throughput. That's where you should stop.

Yet, there is another consideration. It is better to have multiple physical machines rather than a single big fat box. This is reliability. Should this box go offline for some reason, it will take with it all the app servers that are running inside it. The infrastructure running many separate smaller physical machines is going to be less affected by the failure of a single machine as compared to a single box.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top