Web 2.0 Scalability in 2022

Web 2.0 seems to be a lot better at dealing with concurrent users. My question is how far can this go? I know it’s application specific but has anyone measured the limits of users per core? Let’s say under the constraints of one action per user per second or so.

If I had a something like a $3000 high core CPU, what would you guess the limit to be while still be responsive?

1vcpu 2gb = about 1000 users (you need 3000 sockets, about) if you set the correct setup. Tested with loader.io behind a load balancer. It can handle much more but requires additional system improvements/setup.

With lout SSL since the Loadbalancer handled that.

1 Like

I’m not sure where it came from, but the rule of thumb I’ve been following is 50 concurrent users per running instance. There is a point at which you’d want to load balance servers and not have one high-cost server, but I’ve never pushed Xojo to that limit.

I’d love for some technical data to illustrate Xojo’s limits. An automated connection tester isn’t going to test the actual functionality of a Xojo Web app. A tool would have be written to specifically start interacting with buttons and such.

Memory wise but one can manage this depending on the size of the web app and it’s web server. One session may have multiple connections active but only one that remains active. But only 50 on one server then xw would not even be worth it…

Just to clarify, I’m talking about 50 active concurrent users, not –MaxSockets=50

2 Likes

Yes me too… there is no indication this causes an issue. Totally depends on your session/webpage etc memory usage and yes we test with browser connections in the 1000’s.

–MaxSockets=1000 cuases no direct issues
–MinSockets= this value causes the socket pool to grow per this number when needed.

Note this depends totally on how you setup your webserver and load balancer if any. All without nginx overhead

Max concurrent is sockets*3 on average. So you need for example 1000 users active the. You would need --MaxSockets=3000 but that may be the absolute limit on a high en server with loads of GB ram. This al depends on your mem use of the web app.

It’s possible but mostly you may want to limit any server to have 1000 max sockets and NO secure SSL usage on the webserver itsef so use an actual load balancer that comms only over the local nw with your servers. Also use NO shared servers. And make sure to optimize your process for speed. This again all depends on your programming

Let’s say this is about 1000 (absolute session limit ) per core. Now this depends on the type web app. This is only true when you do no disk reading l/writing and requires at least 2GB memory

It should also be pointed out that you can get some mileage from using helper apps. Basically, you write a console app that sits next to your main app that you shell out to for long running or cpu intensive processes.

2 Likes

For this, one should use at least a 2cpu system instead of one.

1 Like

Does the Web Licence support multi-core dev? Referring to the Xojo Licence Comparison Chart - it indicates that a Pro Licence is required to support multi-core dev for Web. Is that true?

Multi-core support (workers) is only available for Desktop applications.

I see this feature request to add it to Web/Console: Case #68892

2 Likes

You can use a Shell class to parse arguments to a console application. You create a console application which you can then send a result in one-go which would be the best way. Workers (the xojo-workers) have alot of overhead, they may be a solution but probably not the best.

Keep in mind in a web application you may want to get the best performance on all fronts, optimize code will improve usability and scaleability.

You should be able to do sync call to shell in threads (or threaded code like App.HandleURL) but you should test this to make sure it won’t completely block you web app.

2 Likes

@DerkJ,

Thank you for your reply.

If you only use Web, Xojo’s licencing model IMO really discourages the use of console/service apps.

The least expensive licence that includes console/service apps is Pro @ USD$799, which means if you only use Xojo Web adding console/service apps will cost another USD$400. You can’t even buy a Lite licence for console/service apps only (maybe something to do with the binary format restriction of the Lite licence - I don’t know).

I’d like to see console/service apps included in the web licence, or at the very least create a Web Pro licence for a little extra that includes console apps and perhaps some other goodies.

Kind regards, Andrew

2 Likes

While i understand your response here, i must say if you need more you may want to go pro. Your scalability is going to cost more anyways, you’d better prepare for it.

1 Like

That is true, and Xojo being a “web server” limited to a single core… they really should think more about giving the workers class included in the web edition…

But it is also true that the “multicore” feature called “workers” is just marketing. A simple console app and a little internal code to call the helper easier but nothing you cant do before.

And if the money/licence is a problem, there is nothing stopping you from doing helper apps with desktop ones

1 Like

Yes. I tried the technology and was extremely disappointed in everything about it. Write your own console helper, you’ll be more satisfied.

1 Like

@DerkJ,

I agree that the cost of dev-tools are trivial weighed against the costs of scaling an app. IMO that was a cheap shot (smiling).

I was merely trying to point to an anomaly in Xojo licence model, the issues you raise whilst true are largely unrelated to my main assertion. If you have a Web licence you should IMO also have access to console apps - Xojo Web is an even more incomplete product without it.

The cost of the Xojo Licence is perhaps one third or less of the total annual cost of ownership of a Xojo Development Stack given the level of missing functionality conveniently delivered by plugins. This is certainly true of Xojo Web, where Anthony, Christian and Tim’s products, among others provide: working, enhanced or missing functionality.

I think you have forgotten I’m not the OP here.

I have no current intention of scaling a Xojo 2.0 web app, but remain very interested in the topic. I was encouraged by the numbers you posted earlier in the thread.

I use Xojo Web mostly as a prototyping tool (which it excels at largely because I am familiar with it). On occasion I’ve had to support maybe 150 concurrent users for brief periods of time.

The prototypes I build in Xojo are often delivered in a production sense using other web technologies.

Kind regards, Andrew

1 Like

We are lucky to have “Lifeboat” by strawberry software, the guy coding it does regular updates and has responsive email support. I think it’s free for one server and one core.

It’s well worth the purchase if you’re planning on hosting your own Xojo web app on a local linux box or a VPS like EC2.

6 Likes

FWIW, the ability to use multiple processors in your app or create “helper” apps is considered a “Pro” feature. That’s why Console apps are part of the Pro license.

Noted Greg. FWIW, I did suggest a Web “Pro” licence.