Назад | Перейти на главную страницу

Настройка производительности Odoo 10 CE - включение рабочих

Я постараюсь как можно лучше объяснить проблему, с которой я столкнулся с Odoo 10 CE, работающим на виртуальной машине Ubuntu 16.04 LTS, размещенной на локальном HP Proliant G6 с Hyper-v.

Технические характеристики физического сервера:

Характеристики виртуальной машины Ubuntu:

carlo@enecom:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    1
Core(s) per socket:    8
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 26
Model name:            Intel(R) Xeon(R) CPU           X5560  @ 2.80GHz
Stepping:              5
CPU MHz:               2762.494
BogoMIPS:              5524.98
Hypervisor vendor:     Microsoft
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
NUMA node0 CPU(s):     0-7
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni ssse3 cx16 sse4_1 sse4_2 popcnt hypervisor lahf_lm kaiser
carlo@enecom:~$

Машина с ОЗУ 4 Гб

carlo@enecom:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3164         291        1984         113         889        2684
Swap:          4091           0        4091

Я хотел бы, чтобы рабочие работали лучше. Всего несколько пользователей используют экземпляр odoo.

Может ли кто-нибудь помочь мне с ошибкой, которую я получаю каждый раз, когда меняю worker на значение> 0?

2018-01-13 11:23:36,666 9225 ERROR ENECOM odoo.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/http.py", line 640, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/odoo/odoo-server/odoo/http.py", line 677, in dispatch
    result = self._call_function(**self.params)
  File "/odoo/odoo-server/odoo/http.py", line 333, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/odoo/odoo-server/odoo/service/model.py", line 101, in wrapper
    return f(dbname, *args, **kwargs)
  File "/odoo/odoo-server/odoo/http.py", line 326, in checked_call
    result = self.endpoint(*a, **kw)
  File "/odoo/odoo-server/odoo/http.py", line 935, in __call__
    return self.method(*args, **kw)
  File "/odoo/odoo-server/odoo/http.py", line 506, in response_wrap
    response = f(*args, **kw)
  File "/odoo/odoo-server/addons/bus/controllers/main.py", line 35, in poll
    raise Exception("bus.Bus unavailable")
Exception: bus.Bus unavailable

Это мой odoo-server.conf (его часть)

limit_memory_hard = 2147483648
limit_memory_soft = 1572864000
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
limit_time_real_cron = -1
workers = 9
xmlrpc = True
xmlrpc_interface =
xmlrpc_port = 8069
longpolling_port = 8072
max_cron_threads = 2

Не могли бы вы помочь мне с этой ошибкой?
Также я запускаю Odoo на apache2 с обратным прокси.
Может быть, мои значения в файле conf неверны?

Я просто сталкиваюсь с подобной проблемой с вами, а затем копаюсь, пока не найду решение @Carlo

Ошибка возникла как конфликт разработки odoo для Live chat. Без модификации обратного прокси nginx:

Запрос longpolling будет адресован x.x.x.x: 8069 / longpolling

Это обрабатывается модулем с именем IM bus, а затем вызывает ошибку, поскольку это выглядит как незавершенная разработка для режима предварительной вилки.

Чтобы заставить его работать, вы можете изменить nginx для обратного запроса longpolling с адреса x.x.x.x: 8069 / longpolling на x.x.x.x: 8072.

Который используется классом GeventServer как конфигурационный порт longpolling_port.

Наша экспериментальная конфигурация nginx проста:

upstream backend-odoo {
  server x.x.x.x:8069;
}
server {
  location /longpolling {
    proxy_pass http://x.x.x.x:8072;
  }
  location / {
    proxy_pass http://backend-odoo;
  }

Наша конфигурация exceprimantal odoo проста как odoorc:

workers = 5

Надеюсь, это сэкономило вам и читателю время.

Это НОРМАЛЬНОЕ поведение.

Это происходит, когда клиенты начинают открывать два или более окон / вкладок браузера. Longpolling происходит в n + 1 окнах, и БУДЕТ запускать Bus unavailable.

Эту ошибку можно проигнорировать. Скорее всего, нет никакого способа исправить это, если вы не используете внутренний код odoo.