What to Upgrade?

We have a solution hosted on 2 machines. 1 runs our Servoy App server, and 1 is our MySQL Database Server.

If we wanted to beef up our servers, which server would you update first?

Ideally, we could do both servers, but if we wanted to increment costs, where would we get more bang for our buck? Giving more processing power to our App server OR our DB server?

Thanks.

Hi Chico,

That is hard to say like that. What are the specs of the 2 current servers? Also mention the disk setup of the MySQL server.

I’d also add to what Robert asked: are you focusing on webclient access or smartclient? Webclients are more demanding since all resources are allocated server-side. Ho many clients do you expect to connect to the server? How large is the solution?

We’re hosting on Amazon

So,we a Small Instance 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of local instance storage, 32-bit platform. It’s running on CentOS.

We also use MySQL via RDS. A Small DB Instance: 1.7 GB memory, 1 ECU (1 virtual core with 1 ECU), 64-bit platform, Moderate I/O Capacity.

We will have a mix of smart client and web client, but as time goes on, it will probably be a 50/50 split.

In the next year, we hope to be at 500 clients. Now, we’re dealing with about 125. The solution app is 5.8 MB.

Does that help?

I think that the DB server is more than adequate unless your database is very complex and you are dealing with a lot of data but to get a more accurate snapshot of your scenario I would start monitoring cpu and memory usage on both servers to figure out how your setup is performing. My guess is that you will need to increase memory on your servoy server, especially if you expect your webclient users to grow up, that would mean to switch to a 64bit OS to be able to handle more than 2GB of RAM assigned to Java.

Start monitoring your servers, you could use http://munin-monitoring.org, it’s quite easy to configure and very well done.

Hi Chico,

In addition to what Nicola says you need to make sure that your JVM is then also 64-bit. So OS and JVM need to be 64bit to address more than 2GB of RAM.
Another place where you can gain performance is disk IO for the database. You say ‘moderate I/O capacity’, that doesn’t tell me anything but I am sure you can decide on what other options might be better on Amazon.
And Nicola is right on the money on this one: monitor your servers. You can choose Free Open Source Software (FOSS) packages like Munin, Cacti or Nagios and commercial offererings like Lithium5.

Hope this helps.

Thanks so much for your assistance.

Amazon’s monitoring does seem to indicate that we’re reaching our limits so we are going to upgrade. Will let you know how it goes.

When moving to a more robust App Server with more RAM, will Servoy Server (4.1 and 6.0) use more RAM automatically or do we have to specify how much it should use?

Thanks again.

You will have to edit your servoy_server.sh file and set the “-Xmx” property, this is mine to give you an example: intial memory allocated to servoy is 64MB, max memory is 1280MB, shrink or increase the allocated memory when 20% limit of free heap is hit.

#!/bin/sh

while true
do
	java -Djava.awt.headless=true -Xmx1280m -Xms64m -XX:MaxPermSize=128m -XX:MaxHeapFreeRatio=20 -XX:MinHeapFreeRatio=20 -classpath .:lib/activation.jar:lib/antlr.jar:lib/apache-mime4j.jar:lib/BrowserLauncher2.jar:lib/commons-codec.jar:lib/commons-collections.jar:lib/commons-dbcp.jar:lib/commons-fileupload.jar:lib/commons-io.jar:lib/commons-logging.jar:lib/commons-pool.jar:lib/dom4j.jar:lib/hibernate3.jar:lib/httpclient.jar:lib/httpclient-cache.jar:lib/httpcore.jar:lib/httpmime.jar:lib/j2db.jar:lib/j2dbdev.jar:lib/jabsorb.jar:lib/javassist.jar:lib/jcifs.jar:lib/joda-time.jar:lib/js.jar:lib/jta.jar:lib/jug.jar:lib/log4j.jar:lib/mail.jar:lib/MRJAdapter.jar:lib/networktnl.jar:lib/rmitnl.jar:lib/server-bootstrap.jar:lib/servlet-api.jar:lib/slf4j-api.jar:lib/slf4j-jdk14.jar:lib/slf4j-log4j.jar:lib/wicket.jar:lib/wicket-calendar.jar:lib/wicket-extentions.jar com.servoy.j2db.server.main.ApplicationServer "$@" 1>> server.log 2>> server.log
	EXITCODE=$?
	if [ "$EXITCODE" != 99 ]; then exit $EXITCODE; fi
done

Thanks.

So if we’re going to a server with 7.5 Gig of RAM, what would you put the values at?

It depends on what else you are running on that server, keep in mind that there is a VM overhead beside the Heap space you are dedicating to Servoy. I would start at 4GB and do some testing.

It’s all dedicated to Servoy.

We will give it a try. Your help is greatly appreciated. :)