Hello Cuba Community,
Looking for deployment guidance. We have an app that has been deployed to an AWS beanstalk. The app is deployed as a single war deployment with an AWS application load balancer in front of the beanstalk. (We currently have two instances running of that app in different availability zones, with the one application load balancer and a DB)
We use the data import add-on to upload Excel files in the app. Uploads work perfectly fine in development. My problem comes in where a file that may have only take a few seconds to import will take several minutes to do the same in AWS. (Example 300+ rows, 12 attributes, approx 7 minutes to upload) Some uploads take so long the Tomcat service stops (During the import there are unique checks/calculations/and sorting that also happens) - Other than the issues during large imports the rest of the app works perfectly fine.
I have extended the NGINX configuration in the AWS beanstalk to extend the time outs, same with the application load balancer. While this has helped on the timeouts I still have long upload times for files with many rows which I would like to speed up.
I have been reading up on the application scaling in the Cuba manual. There it suggests having separate Middleware and Web client Tomcat instances vs a Single War Deployment.
Would it be better to have a separate middleware server in this instance? Could this be the cause of my speed issues or is there something else I should look at?
Should I instead focus on giving more memory to the Tomcat servers (currently at 2gigs), or more memory to the Database server?
I really appreciate any additional experiences or thoughts anyone could share.