yuuvis® RAD Q&A

0 votes
by (2.9k points)

Hello,

how can we enhance the performance of enaio? When we want to create an object, we have to wait around 30-40 seconds until the create form is shown. Therefore our e2e tests are failing and working is not possible.

We have hardware of 32GB and 4 Cores.

Is there any specific settings e.q. to enhance memory to a microservice to enhance the performance or other settings we can set?

Thank You

2 Answers

+1 vote
by (20.0k points)
selected by
 
Best answer

Hello Dennis,

from what I understood you are running all enaio components in one VM with 32GB RAM and 4 CPU cores. While this is possible for development purposes, it is - as you experienced - not really a good environment for time sensitive applications like e2e tests.

Form our experience, the most important factor in this scenario is the speed of the harddrive. You will need a very fast harddrive - preferably a SSD. If no ssd is available try to separate the storage for the mssql/oracle db from the storage of the elasticsearch data to physically independent drives.
Especially elasticsearch is a very disk and RAM instensive application. You will need to give it at least 8 GB RAM - better would be 12 to 16 GB.
Also keep in mind that you need to have some "unused" RAM left - Windows uses it for caching file accesses which speeds up performance significantly.
If you don't need / access any renditons (content-previews) in your tests you can also configure the objecttype settings to not create a rendition right away and disable the rendition-plus service. Otherwise it will start the conversion process for each uploaded content-file which might take performance away.
Another thing is the logging settings of the dms-service and the service-manager. Make sure you are not logging in DEBUG mode and turn off any unnecessary logging. Especially the "console" logger of the dms-service is not needed if you run it as a windows service and you should configure it to "OFF" (using the enterprise-manager).

From the project view there are also a few things to keep in mind.
- The more objecttypes and roles you have the more complex the database statements will be
- Try to use as little clauses in roles as possible - clauses will increase complexity very much
- Minimize use of abstract types and inheritance
- Only choose to create an initial rendition if you really need to

If this doesn't help, there is most probably no other solution than to scale the system to two or more VMs.

Nicolai

by (2.9k points)
Thanks for your detailed answer Nicolai. We would start with giving elasticsearch more memory. Do you mean to give elasticsearch more heap size as following:
ES_JAVA_OPTS="-Xms8g -Xmx12g" ./bin/elasticsearch
Thanks for your answer
by (20.0k points)
If you used our installer and run elasticsearch as windows service you should go to <elasticsearch>\bin and execute the elasticsearch-service-x64w.exe file. There you can switch to the "Java" Tab and increase the "initial memory pool" and "Maximum memory pool" sizes to 12288. Then restart the service.

However you use and start elasticsearch, make sure to have initial (-Xms) and maximum (-Xmx) heap size the same value. Otherwise elasticsearch won't start (strong performance degradation due to the need to increase the heap size during runtime)
0 votes
by (2.9k points)

I found out, that when you have no entries in your in-tray the performance is fast. But when you have only 20 entries in your in-tray the performance is extremely slow and deleting in-tray entries takes as well as creating objects takes long time.

by (3.3k points)
This 'smells' like a DB related problem. It is may be possible, that one or some indices are missing. To find out the base reason for this performance degration, you could enable the SQL tracing in the rest monitor and find the statements that take too much time.

Related questions

...