I’m curious to hear at what point one might expect the Servoy Server computer to be overtaxed by a large number of users (or smaller # of users but very actively using the db). I would imagine with the Servoy server handling the piping down of record sets, data broadcasting, etc. for a large number of guests, no matter how powerful the SQL back end the application server itself may become a bottleneck.
So I wonder whether anyone here has successfully served a Servoy application via one box to more than 100 or 200 users at one time, and how did that go?
For larger user counts or databases that will just be hit harder in terms of # of queries, # of updates, etc. … is it possible to use multiple Servoy application servers, perhaps in a RAIC setup? Would there be any way to make them “aware” of each other so that data broadcasting is handled amongst all guests regardless of which application server they are connected to?
If there is already an explanation of this somewhere please forgive me and just point me to the right place in the docs.
IT2Be:
This has been brought up more than once. Just browse/search the forum and you will find more than one answer…
Sorry it has taken so long to get back onto this discussion. I have spent some serious time searching the archives of this forum, using such keywords as “multiple servers” and “RAIC”, etc. I have found plenty of discussion re using one server for more than one solution, but I cannot find the information you refer to about using more than one application server for one solution.
jaleman:
How many users are you planning to deploy to?
None right now! This is hypthotecial. I recently was in a nightmare situation with another development environment (FileMaker) where suddenly we needed to add a couple hundred new users to a system and ran headlong into the limits of the tool. So this time I am just trying to be informed in advance of recommending any particular tool for any scenario. I try to plan for user count perhaps doubling unexpectedly: what would happen?
So just hypothetically speaking I was wondering:
(1) with a moderaly complex solution, where does a single connection to Servoy Server hit its limits? I understand you could throw more RAM and bandwidth at a single server, but at some point due to I/O and threading limitations one would start seeing a bottleneck at the application server. Has anyone ever hit that limit, and (I know it is very hard to quantify this) at what point is that limit hit?
(2) If one uses a back end that supports grid computing or replication, can one also replicate the application server tier? If the same solution is installed on two Servoy servers, is there a way for Servoy to continue to manage concurrency among all users? Is there a rollover mechanism that moves a user connection to a second server if the first server is too busy? etc.
If there is indeed a discussion where this was already covered, my apologies, I could not find it. I had already looked before posting the first time. Please point me to the right URL and I’ll go away for a while!
We are considering Servoy for a consumer orientated service now that the platform supports the headless client and automated web page display in the next release.
We have the same questions about just how scaleable the service is likely to be using Servoy.
Well, I think it should be possible but I also think it is not advised.
You would run into problems like having to deploy a new version to different machines but that would be the least of your issues. Another issue is broadcasting of changes. When working with one server Servoy handles this for you. With more than one server this is not dealt with.
For sure you would have to use database sequences and use the same database(s) for all servers you are running.
BTW I ‘scanned’ your previous posts again but I don’t think your hypothetical problem of ‘too many users’ will arise very soon…
OK, then, at least one of my original questions is answered, Servoy does not handle concurrency across multiple application servers.
Regarding “number of users” … I would still love some real numbers.
Is 1,000 users accessing a Servoy app through one network port doable?
10,000 users?
50,000 users?
Yes, all hypothetical but still, Servoy advertises that the user count is limited “only by bandwidth and hardware”. But there are limits to the network I/O activity that can be run through one computer… not asking for an answer, just wishing for one I guess.
Prior to purchasing Servoy, this was a big question of ours as well. We ended up trying to compare the App server to other, more well known and proven types of technologies/deployments.
We looked at the SQL model like a standard 2-tier webserver setup, with the webserver on 1 machine, and the ability to connect to multiple SQL servers. Many HUGE sites will load balance their webservers, but your talking about a very large number of clients at that point. Most can handle processing all of those SQL queries on just 1 server.
The rest of Servoy we looked at as being pretty much Tomcat, which again can handle a large number of clients.
I know this is very much an over-simplification, but the overall idea with the technologies, is that if you are maxing out, you just upgrade the hardware or network.
I would however like to see some recommended specs based on deployments. Something like…Servoy recommends at least a …GhZ processor with … MB of RAM for a deployment size of … # of users.
I think these are very important questions. We are building an ASP business model app and sooner or later will have 1,000’s or multiple 1,000’s of concurrent users on the system. Some guidance from the Servoy technical folks would be greatly appreciated. K
Memory usage is first of all largely dependent on the type of client you use.
1-Rich Client
Occupies about 200K per client on the server, requires minimal processing power (actually we delegate most work to sql database)
If you would run the databases on separate machine we are convinced you can handle at least 500 clients on a Server 2ghz,1gb,1cpu.
2- Web Client / Headless Client / Batch Processors
Cost about 2MB per client + solution memory which is the same as you can find in a rich client memory monitor. (10Mb - xxMb)
And consumes processing resources to run all things like JavaScript. It will globally scale as good as other enterprise web environments such as J2EE and .Net servers: at least several hundred on something like 2ghz,4gb,2dualcorecpu
So if you bump up the server specs with more/faster CPUs, more memory, run databases on different machines, you will be able to handle much more clients.
To handle needing more users than FMP could serve, we copied the solution to several servers and used SyncDek. (This was not my choice, someone else made the decision!)
It was expensive and it seemed like we were using three handcarts to move house instead of hiring one 18-wheel tractor-trailer, which was really what was called for.