Настройки за мултипроцесорна работа на Odoo 8
Обикновенно ERP Odoo се инсталира на VPS или на физически сървър. Винаги логическите процесори са повече от един, най често 4, 8, 16. Ако Odoo не е настроен да работи в мултипроцесорен режим, вие не ползвате ефективно сървъра, в часност процесора му. Това е особенно важно в реални ситуации, когато в системата работят паралелно (едновременно) над 5 потребителя. Без значение е общия брой потребители.
По подразбиране мултипроцесорната поддръжка не е включена в стандартния конфигурационен файл (напр. /etc/odoo-server.conf). Съществуват няколко параметъра, които трябва да се зададът и настроят спрямо броя на логическите ядра и наличната RAM. На първо място това е workers. Правилото е workers=(cpu cores X 2)+1 или при 4 ядра се задава workers=9. Друг важен параметър е max_cron_threads. Той има стойност от 1 до 3 според броя на ядрата и наличната RAM. Други два параметъра са limit_soft_memory и limit_memory_hard, като limit_memory_hard е с 30% по-голям от limit_soft_memory. Тези параметри зависят от наличната RAM и при 4 ядра (8 логически), limit_memory_hard = 1572864000, limit_memory_soft = 107374182, workers=9 и max_cron_threads=3, Odoo спокойно се справя с над 20 паралелно работещи потребителя.
По някаква причина, не сме изследвали проблема, ако е включен мултипроцесорния режим и longpolling на порт 8072 и xmlrpc порта не е 8069, в лога непрекъснато се появява грешката Exception: bus.Bus unavailable.
Дискусии и експерименти на тази тема можете да видите на https://github.com/DocCyblade/tkl-odoo/issues/49
В таблицата по-долу можете да видите някои готови стойности при различни комбинации на ядра и RAM:
| CPUs | Physical | workers | cron | Mem Per | Max Mem | limit_memory_soft | 
|---|---|---|---|---|---|---|
| ANY | =< 256MB | NR | NR | NR | NR | NR | 
| 1 | 512MB | 0 | N/A | N/A | N/A | N/A | 
| 1 | 512MB | 1 | 1 | 177MB | 354MB | 185127901 | 
| 1 | 1GB | 2 | 1 | 244MB | 732MB | 255652815 | 
| 1 | 2GB | 2 | 1 | 506MB | 1518MB | 530242876 | 
| 2 | 1GB | 3 | 1 | 183MB | 732MB | 191739611 | 
| 2 | 2GB | 5 | 2 | 217MB | 1519MB | 227246947 | 
| 2 | 4GB | 5 | 2 | 450MB | 3150MB | 471974428 | 
| 4 | 2GB | 5 | 2 | 217MB | 1519MB | 227246947 | 
| 4 | 4GB | 9 | 2 | 286MB | 3146MB | 300347363 | 
| 4 | 8GB | 9 | 3 | 546MB | 6552MB | 572662306 | 
| 4 | 16GB | 9 | 3 | 1187MB | 14244MB | 1244918057 | 
| 6 | 12GB | 10 | 4 | 763MB | 10682MB | 800304465 | 
| 6 | 16GB | 13 | 4 | 838MB | 14246MB | 878765687 | 
| 6 | 32GB | 13 | 4 | 1676MB | 28492MB | 81757531374 | 
| 8 | 32GB | 17 | 5 | 1295MB | 28490MB | 1358092426 | 
| 8 | 64GB | 17 | 5 | 2590MB | 56980MB | 2716184851 | 
Calculations on how we got the above chart
M = Total memory in bytes (1048576 = 1MB)
 W = Workers (workers )
 CW = Cron workers (max_cron_threads)
 TW = W + CW
For ram 512 to 999MB
 ((TW * 0.45 ) + TW) / M = limit_soft_memory
1GB - 1.99GB
 (TW * 0.40 ) + (TW - 1) / M = limit_soft_memory
2GB - 3.99GB
 (TW * 0.35 ) + (TW - 1) / M = limit_soft_memory
4GB - 7.99GB
 (TW * 0.30 ) + (TW - 2) / M = limit_soft_memory
8GB + 11.99GB
 (TW * 0.25 ) + (TW - 3) / M = limit_soft_memory
12GB +
 (TW * 0.15 ) + (TW - 3) / M = limit_soft_memory
Типично натоварване на реална инсталация при един потребител и синхронизация на преводи:

 
																		 
     