Page 1 of 1

Server Dimensioning

PostPosted: Fri Nov 27, 2015 10:49 am
by Bernd.N
I would like to get any recommendations for server dimensioning, especially regarding RAM and CPU-cores, when expecting around 150 concurrent users.
We use smart client and run one postgres server and a separate app server, both on Windows Server 2012 R2.

And should it be root servers or even dedicated standalone servers? (Though I do not know if the latter is even possible in todays time.)

Re: Server Dimensioning

PostPosted: Tue Dec 01, 2015 12:38 pm
by ngervasi
Hi Bernd,
if you expect to only use smart client and you don't have many batch processes the requirements are quite relaxed. 2 cores 64bit with 4GB ram should be enough to run Servoy serveer considered that all the processing is done client side and the DB is running in another server. If you can afford it go for 6GB ram to have some extra space for windows unxpected behaviours..

To give you an idea this is from a production server of mine with 100 users connected and working:

JVM Information
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.version=1.6.0_32
java.vm.info=mixed mode
java.vm.vendor=Sun Microsystems Inc.

Operating System Information
os.name=Windows Server 2008 R2
os.version=6.1
os.arch=amd64

System Information
Heap memory: allocated=826168K, used=685264K, max=2027264K
None Heap memory: allocated=111936K, used=111109K, max=180224K

Re: Server Dimensioning

PostPosted: Tue Dec 01, 2015 1:08 pm
by Bernd.N
Hi Nicola,
that sounds good. We will install a fast SSD drive too. Also we got the recommendation to put AppServer and DB-Server on one machine, should be faster.
Bernd

Re: Server Dimensioning

PostPosted: Tue Dec 01, 2015 1:17 pm
by ngervasi
If you put the DB on the same server it's faster because you reduce the latency of every query sent but you will have to reconsider ram and cpu specs. If you plan to use physical hardware I would use VMware virtualization and 2 separate VMs for DB and App server, it makes it easy to scale and move VMs as needed.

Re: Server Dimensioning

PostPosted: Wed Dec 02, 2015 8:40 am
by rodney
Hi Bernd

We have had an app server up and running for over 2 years, currently between 250-300 concurrent users serving a complex ERP type application, multi tenancy with a DB per tenancy (200 DB's/Tenants). Extremely reliable.

Did a fair bit of investigating on this before deploying and also spoke to database dba experts as well as hardware suppliers on various hardware/software configurations. Decided to deploy on my hardware in a co-location setup in a local DC (this was far cheaper than a VM for the following specs, in Australia anyway!). This setup also gives me complete configuration control over the DB/hardware settings.

Hardware:
2 x 6 Core Xeon processors @ 2.3 gHz
48 GB RAM
Intel 200 GB SSD drive for the DB
Separate drive for the OS
Separate drive for the document storage (we do a lot of document management in the application)
All drives mirrored

Windows 2012
Servoy 7.4.4
Java 7 update 71 64 bit
MySQL 5.6.24

With 250+ concurrent users my CPU utilisation is less than 3% rarely peaks beyond 5% :D

My recommendations:
Don't split the app server and DB across 2 physical servers as latency will increase, this may have been acceptable when you could only get 4 CPU cores per physical machine but this is simply not the case anymore.
We tested on Linux vs Windows 2012 with various benchmarks and windows was a little faster but I put this down to drivers for the SSD's being a little immature for Linux at the time. Our DB gurus also told us there was very little performance difference between the 2.
Fill your server with RAM, your DB should always sit in memory for best performance (and RAM is cheap). You therefore only need to consider write performance to the drive.
SSD's drives for the DB are a must (but even Amazon EC2 Servers now support these as standard).
Always hire a DBA expert to tune the settings for the DB configuration (for MySQL, this can make a major difference).
Always use performance monitors for slow queries etc. (for MySQL there are some great tools for this).
Use the 2nd physical server instead for replication (a must) and fault tolerance.

Rodney

Re: Server Dimensioning

PostPosted: Wed Dec 02, 2015 9:27 am
by Bernd.N
Hi Rodney,

thanks a lot for this comprehensive report on your setup, I will for sure consider your tips. We are currently making last decisions on the server.
Regarding Java I got the tip it should be the specific "Server JRE":
http://www.oracle.com/technetwork/java/ ... #javasejdk

Bernd

Re: Server Dimensioning

PostPosted: Sat Dec 05, 2015 1:29 pm
by Jan Aleman
Are you really considering to buy a server? Why not get a cloud one? It will allow you to scale up and down as necessary and you never have to worry about owning hardware. It is quite hard to predict upfront your exact hardware requirements as they largely depend on:
- number of users
- behavior of users
- nature of application
- design of application
- architecture of application
- amount of data being processed
- amount of business logic
- quality of code
and more.

While one could say that on a typical server you should be able to support 200-400 concurrent users it will depend a lot on the items above. Be agile: get a cloud server and start trying. To give you an idea at Servoy we do not own or operate a single server. It's all in the cloud.

Re: Server Dimensioning

PostPosted: Sat Dec 05, 2015 3:32 pm
by Bernd.N
Hi Jan,
yes sure, it is about the server that the customer's IT service provider will provide. Cloud or not, in the end we need physical RAM, some CPU cores and a fast SSD drive. :)

Re: Server Dimensioning

PostPosted: Tue Feb 07, 2017 4:44 pm
by jbrancoIF
I was trying to find some info on this subject. I need some kind of minimum requirements for a Servoy server.

The wiki page was not very useful: (it would be nice to be able to warn Servoy about incomplete/missing/wrong wiki pages)
https://wiki.servoy.com/display/public/ ... quirements

There is some "official" recommended requirements?

Re: Server Dimensioning

PostPosted: Wed Feb 08, 2017 10:51 am
by jcompagner
you can warn servoy by just opening a support ticket.

Problem with those requirements is that it is so depending on your solution what you need.
a server instance of servoy will run on current day hardware just fine with Java7 as the minimum (which is already none supported anymore by oracle)
Because a "HelloWorld" solution will run on a very basic server which doesn't also needs a lot of cpu or memory

But it all depends on how big is your solution? How many forms are loaded in how many data does a client ask for, what type of client? NG,Web or Smart?
How many clients do you want to serve concurrently?
This is something that you really need to test your self for your solution, because it is really different for pretty much everybody.

Re: Server Dimensioning

PostPosted: Wed Feb 08, 2017 1:41 pm
by phschmid
Still, it would be useful to have some information, based perhaps on a sample application with nb. of forms known, type of usage (transactions per min.), etc.
Quantity of ram per simult. client for the different client types, nb. of max. clients per cpu (ex. 2 GHz), etc.

Re: Server Dimensioning

PostPosted: Wed Feb 08, 2017 3:30 pm
by jcompagner
that still depends on so many factors.. number of forms directly doesn't tell us anything,
how many fiels, how many data is kept in a form
Are you hitting tables with 100+ columns per table?
So it always will just be "a number". You always have to profile your solution how it behaves and what it needs if you login with 10 users and let those users do something.