How are you testing load / performance of your standalone web apps?
My standalone web app allows clients to connect via https, then does a very simple DB query or commit and then returns a simple JSON formatted result back to the client. Basically a very simple https API for the clients in our computing labs. I’m betting this is a very common type of web app being developed with Xojo, eh?
Besides using shell scripts on the server side to log the number of simultaneous web app processes and DB connections, what other methods should I be looking at?
(The web app is running on a 64-bit Red Hat Enterprise Linux Server release 7.2.)
I have a simple but fairly substantial web app I built at my work. Before I set out to build it I tested Xojo using some load testing tools like JMeter, ApacheBench and I also rolled my own in Xojo.
My app runs on RHEL 7, like yours - Xojo plus RHEL is a strong combination!
I ended up throwing in HAproxy which made HUGE performance difference - especially with SSL termination and multiple app instances. My app currently supports over 1200 distribution centers each with 1-15 users. I use built-in systemd to keep instances up and running and do a lot of backend processing via helper console apps to spread the load around too.
Sounds like you might be running your Xojo web app as a CGI versus a stand alone?
I am running multiple instances of a stand alone app behind HAproxy. But I also run apache, just to serve static content such as images since it takes load off the Xojo apps. I do the routing, load balancing and SSL termination in HAproxy.
Wow, nice setup!
We’ve used load balancers (F5 and Cisco) for our other major production services, I may want to review those next.
It makes a major performance difference if your app is going to get substantial usage. Plus it opens up options for things like: routing different kinds of requests, preventing abuse, handling failure and for future scalability. It is not even hard to get it set up.