Multi-user web app with a great many simultaneous users

Sorry, yes I should’ve added also the pure Java test, not using a PWA. I was trying to answer the OPs question to show in which direction we did finally go for bigger projects and did skip showing a test step.

So but for your comparision (framework 1) I can give you the results with Java (you can compare this with the numbers from Xojo in the previous post). As this first test was not not satisfying enough for us (Xojo 10x slower and errors), we did not proceed into testing the second framework (Xojo - PWA) so I can not give you any numbers about that one.

Java (no PWA, comparable with wath Xojo with UI does):

Test Duration: 05:12
Bots: 50
Iterations: 78
Hits: 42871
Errors: 0
Avg Response Time: 1.25s
Max Response Time: 4.87s

Errors reported:

  • Average response times were low and no errors were detected. Nice! The site can probably handle more load next time.

The reason we investigated Xojo was because of the RAD claim for the browsers side. If we had to write the HTML/CSS/JavaScript anyway to write the PWA, it did make little sense for us to go with the slower/more error prone one instead of the battle-proven Java.

I’m going to refrain now from this topic as I feel I’m in dangerous waters of being banned from the forum, what is not my wish. I’ve given our results and interprete them as you want. Other type Web Apps may produce different results, I do no know that. The main objective of posting these results was to assist the OP by showing him our findings and the process we went through to make our decision.

Note that this is only the essence from the final report we received, which gives you further detailed information and some nice graphs ;-). It defintely is worth going through such a process if you are planning a big Web App. Surprises further down the road are no fun.

It is a question almost everyone has (independant of the tool they use), and is one of the hardest to answer.

I wish the OP the best of luck with his project, no matter what his decision will be!

We appreciate you sharing your experience. I don’t want to derail this discussion but since you brought it up, I want to be very clear that you have never had any warnings or been contacted by moderators that I am aware of so why would you think you were close to being banned? We take banning of people very seriously and have only banned a handful of people (7) for violating guidelines in our 25 years.

9 Likes

It was because of this forum rule:

Do not advertise or promote other companies or products, including posting links, which may compete with Xojo, Inc.

Which is very hard to follow when reporting this kind of thing if you can not name other tools. Thank you for putting me at ease! :sweat_smile:

As far as I know, we have never banned anyone without warnings (letting them know).

Edit: Sorry for taking this thread off-topic. Alain, please feel free to contact me privately if you want.

3 Likes

I was deliberately vague due to the same concerns Alain described above. Following Jason’s previous comments I’ll add some more details.
I saw similar performance as Alain from Web 1 and Web 2, and have since switched to a HTML/JS front end and an API backend developed using libsoup in an alternative language. This is comparable to the difference Alain reports above with Java/JavaScript .

3 Likes

This numbers are based on a real world web app (similar to the one OP was talking about) tested with real users in various instances.

If sounds like a mockery, well, it is the actual performace measured.

And dont get me wrong, I used Xojo after all, I just had to fire up 8 instances for the 120 users groups and 12 instances for the largest 200 users one.

Of cours that YMMV with a different kind of app but in my case, more than 15 users and the app started to disconnect some users and had to refresh the page to login again.

It was “OK” because it was known that the largest group was 200 and the server had 12 cores, it ran the 12 instnaces fine, but scalling beyond 200 (again, for this specific app), I would have needed another tool.

1 Like

You confirm what has already has said.

In summary:

  1. It is possible to handle many users.
  2. Point one depends on the architecture design and the application.
3 Likes

What’s important here is, Xojo can handle various small business scenarios, specially for intranets. And that alone makes it a valuable tool for such niche.

6 Likes

I am following this discussion with great interest and am very grateful for all the attempts to clarify the position.

1 Like

Just to jump in the ring and bring my 2 cents worth of experience :slight_smile:

I currently use a Xojo web app as an API backend to handle around a million https rest connections per day with a fair amount of data. I understand it’s not the same as having a user facing web app, but my setup is fairly scaleable and may help seeing that some things we think cannot be done may be accomplished by having a good architecture where Xojo is a part of the solution and other pieces can be incorportated.

I have a 2 (for redundancy) haproxy load balancers facing the internet runing on Debian. They handle SSL termination and pass the connections to the backend servers.

I have 5 backend servers, all Mac Minis running MacOS. Each server has one instance of my webapp per physical core to take advantage of all the power in the machine. The Minis do a lot of local caching so that they each will hit the database once for a given information and they will hit the apache server once for any given media file.

I have 2 Postgres databases, one master and one hot standby.

I have an apache server to handle static media files (mps audio and mp4 video) and some static text configuration files.

My setup scales fairly well. I have done it and will do it again as our traffic increases. Simply add more Mac Minis as backends and add them to haproxy load balancers. The database can be replicated and the load distributed among instances. The apache server is fairly idle as most files are requested only once per backend instance and then cached.

In my opinion, no matter the technology/language/framework, the most important thing is to plan the setup to be scaleable from the start, and no single tool will be able to handle all the required parts.

Again, just my two cents.
Again it’s not the same as a full GUI Xojo web app.

But my setup works, and has been working for years, reliably. And I would dare say the project of the OP could be done with Xojo. It’s not a matter whether Xojo can do it or not, it’s a matter of planning the architecture. As it would be with any software or language.

… now I’m ready to be shot at !!! :slight_smile: Remember, I’m just a guy trying to help !!

16 Likes

If you add on top of that a CDN such as Cloudflare, the server will be idle most of the time.

For one of my apps, the backend is an apache server, thanks to Cloudflare, 25% of total bandwidth and 10% of API requests are cached.
18M api requests per month and 30GB bandwidth.

3 Likes

Of course you can, but that is a lot of hardware to handle just a million requests.

Our Java API handles about the same amount of traffic for a fraction of the price without even needing load balancing yet. At about 5 million/day we plan to start a new instance although tests showed 10 million was the breaking point in peak moments. But we want to play on the safe side. :wink:

Running on one Debian server, 4CPU (4 Cores / socket), 8GB RAM. The Java API can handle about 2500 request/second. Same server also runs our MySQL, Web Apps and a couple of background workers handling various tasks and data.

The server is virtualized so the datacenter we use can add memory/disk, even a complete copy of the server in an instance if it should be needed.

EDIT: Damn I did it again! This is Alain Bailleul. I posted while being logged in on a colleagues PC… :sweat_smile:

3 Likes

Eye catcher phrase. I would say a fraction of the cost (and it includes maintenance and hardware upgrades)

I don’t understand the reason for insisting that other ways are possibly more efficient, for example, JAVA.

The original question was: Can XOJO do it?

Correct. Sorry, my native language is not English.

1 Like

The answer is yes, but investing more in the platform to make it so.

Guess what? Idem. :smiley:

2 Likes

No, is not. There are actually several questions. One of them is actually about using other languajes, so bringing up the comparisson is on topic. Another question is about Servers, so it is on topic to say, Yes, you can do it, but need 10x the hardware (and the electric bill that came with that)

1 Like

No need to assume your app has the same requirements as Bruno’s.

Each app will vary on its needs, like hardware specs, but also the amount of people required to build, run and maintain the project.

With Xojo Web you can have your solution up & running with a few clicks, either using Xojo Cloud or Lifeboat, and keep growing from there.

4 Likes

Works both ways. No need to assume our app’s requirements are lower than Bruno’s. And our solution doesn’t require many people too. Deployment is simple: copy-and-paste.

Deployment is just a step of the process. There is also a build system to deal with, JDK version incompatibilities between dev computers and so on.

If you’re happy with it, cool, that’s fine.