Contributors mailing list archives
Re: 30 Checkout Operations per Minute A job for Odoo or not ?by
Vauxoo, Moisés López Calderón
A customer requested to support 5k concurrent sale.order (1 or 2 lines of products) in Odoo.
The process that we followed were: test, measure, fix, test...
The first time that we tested the checkout process supported 15 concurrent virtual users (VUs)
The measure said that it had heavy custom functions in the same transaction of checkout but it could be executed in background (cron, queue)
and there were slow queries because of indexes issues or too many queries executed because of python code
Note: Be careful with the base_automation if you can migrate them to code it is better.
After fix them the next iteration supported 400 VUs
So good but so far from the focus.
The next iteration we found that there were methods that could be using LRU-cache (e.g. prices, website that don't change)
Now we needed to check where the cache was clearing too frequently and fix it.
We implemented CDN
e.g. The sentence "/web/image/company.logo" runs 10 queries (prefetching fields, translating fields...) for each user opening the page
After using CDN 0 queries are executed.
We removed soft process that running with many users it is heavy
e.g. the random image that odoo assign when you create a res.partner
e.g. computed fields moved to cron
After that we detected concurrent update issues
It is hell for performance matter.
e.g. updating the same record at the same time from many users,
e.g. allowing pressing the same button too many times
e.g. sequences using no-gap in the main process, and so on
After finishing all the hints of performance issues in the code and database the next steps were to improve the hardware.
Now, It supports 5k concurrent VUs doing checkout process (choose 2 products, type address, payment card info and confirm)
So, Odoo will support those users but you will need to test, measure, fix, test...
Stress testing tools helps us a lot here
python profilers and query analyzers too
Maybe you are interest to watch our talk in SFO about:
El mié, 28 abr 2021 a las 15:35, Frederik Kramer (<firstname.lastname@example.org>) escribió:
i have a project proposal on my desk that will ultimately end up in
approx. 30 checkout transactions per minute. Has anybody got a project
with that order volume done with a relatively recent version of Odoo
and provide a good reference. Please bear in mind that the project
ahead involves a similarly high volume of stock moves.
Any suggestion / comment like (but not limited to)
Odoo is the wrong technology for that, forget it, because....
You can do it but, a), b), c) ....
If you really want that beast flying involve us over here because we
are among the few ones that already did soemthing similar
would be appreciated.
From our load intensive projects at initOS i know that 10000 orders a
day can be handled but almost 50000 is a different story and thats why
i am asking the most experienced resource out there ;-)
Thanks in advance for your replay
Dr.-Ing. Frederik Kramer
An der Eisenbahn 1
Phone: +49 4105 56156-12
Fax: +49 4105 56156-10
Mobil: +49 179 3901819
Dr.-Ing. Frederik Kramer & Dipl.-Ing. (FH) Torsten Francke
Sitz der Gesellschaft: Rosengarten – Klecken
Amtsgericht Tostedt, HRB 205226
InitOS GmbH, Frederik Kramer