Impact of extra app engines to increase speed of a process (which creates ~8000 objects)

0
We have an application that generates an orderform based on some settings (Language, customer, logged in user). This orderform creates about 8000 objects: 400 products Each product has on average 3 colors Each color has about 5-6 SKU's For each of these products several prices and translations have to be retreived aswell. This whole process takes about 90-100 seconds, and with some microflow optimalizations I think i should be able to fasten it up a little bit aswell. Would adding an app engine increase the speed of something like this? And is there some way to guestimate how much it would improve in speed (or even some way to test this?).
asked
2 answers
1

I'm no expert in this area, but I would assume that if these creates and retrieves are in a single microflow transaction, then adding extra app nodes would not help performance - the transaction can only run on one node. Extra nodes might help if the transaction was trying to run more than once concurrently (multiple users doing the same thing). If it is taking more than a minute and a half to do this once, you have a real problem when the app is scaled up to multiple users.

It might be worth analyzing what's happening at the DB level - is it the 8000 creates that are taking the bulk of the time, or the multipl;e retrieves for each of these? If it is the latter, then increasing the resources available in the DB might allow these data tables to be stored in memory, which could speed up retreives a lot. If it is the creates that are slow, perhaps your DBA can give advice. Fewer indexes on the object being created might help, or there might be some settings for buffers that can speed up bulk create operations.

answered
1

As David mentions you start by analyzing what is currently happening.

As you are explaining there is a single process running to do all the actions. Because you are using a single microflow adding more cpus or more memory wouldn't necessarily improve the execution of the process. Unless you are currently running into the limits.

You should look at the memory usage of your application node, if that consistently levels out at the max of your server you could gain some speed. If you see that you are leveling out adding memory could help since it saves the server the trouble of garbage collecting.
On the app server adding more CPUs would not improve the execution time because it executes a single process in a single thread.

On the database server you can look at both memory consumption and CPU. The database could be working multi-threaded depending on the types of queries you are using. Again just look at the graphs, if you see it close the maximum increasing the server could help. But if the server isn't at it's max capacity enlarging the server wouldn't help.

To summarize, unless the application is really struggling against it's limitations (and generating alerts) you shouldn't expect to gain to much time with a larger environments.
It is more likely that you can gain improvements by reducing the number of retrieves and nr of commits that you are doing during the process.

answered