The goal during the implementation of ABRA Flexi Server was to make it as performant as possible. However, there are several factors that can affect performance.
First Launch
The first request processed by ABRA Flexi takes longer (up to 20 seconds), as the accounting core needs to start up. Subsequent requests are significantly faster. Even so, it is important to let ABRA Flexi "warm up" a little, as it uses Just-In-Time compiler technology that optimizes code based on the way you interact with it.
Software Optimizations
When communicating with the accounting system, it is advisable to apply various optimizations:
Every request is authorized. Therefore, send your authorization credentials straight away and do not wait for ABRA Flexi to return a message requiring authorization before sending your credentials in a follow-up request.
When listing data, you can specify the level of detail. The highest speed is achieved using
?detail=custom:.... Only include what you actually need.If you are listing large amounts of data and do not need external identifiers, disable them using
?no-ext-ids=true.Do not use the listing of all relations (
?relations=all). Always list only the relations you actually need.If you need to list, for example, all attachments for price list items, use the attachments relation listing. This can give you a performance boost.
Make sure you are not calling the same URL multiple times within a single request (this is a surprising but very common occurrence).
If you need to determine the number of records, use
?add-row-count=trueand avoid loading all records.Group similar requests into one. If you need to load three price list items, use a single request and retrieve all records at once.
Hardware Optimizations
If you are starting to encounter performance issues and your application is already fully optimized, we recommend the following steps:
First and foremost, contact our technical support so we can advise you on which steps to take.
Keep the database and ABRA Flexi Server on the same physical machine. Network communication with the database reduces performance.
Verify that the system has sufficient memory.
Optimize the PostgreSQL database.
Increase disk performance.
Add more processors.
