Настройка производительности Odoo 10 CE - предоставление возможности работникам
Я постараюсь как можно лучше объяснить проблему, которая у меня возникла с Odoo 10 CE, работающей на виртуальной машине Ubuntu 16.04 LTS, установленной на локальном HP Proliant G6 с Hyper-V.
Физические характеристики сервера:
- Процессор Intel® Xeon® CPUX5560 с частотой 2, 80 ГГц, 2800 МГц, 4 ядра, 8 логических процессоров
- Название ОС Microsoft Windows Server 2012 R2 Центр обработки данных
- Установленная физическая память (ОЗУ) 16,0 ГБ
- 5х 10к дисков SAS рейд 1+0 (один горячий резерв)
Спецификации Ubuntu VM:
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.
Может ли кто-нибудь помочь мне с ошибкой, которую я получаю каждый раз, когда меняю работников на значение> 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 не верны?
2 ответа
Это нормальное поведение.
Это происходит, когда клиенты начинают открывать две или более окна / вкладки браузера. Длинный опрос происходит в n+1 окнах и будет запускать шину недоступно.
Эту ошибку можно игнорировать. Скорее всего, нет способа исправить это, если вы не сдерживаете внутренний код odoo.
Я просто сталкиваюсь с подобной проблемой с вами, потом копаться, пока не нашел решение @Carlo
Ошибка произошла как конфликт развития odoo для живого чата. Без модификации обратного прокси nginx:
запрос с длинным опросом отправляется по адресу xxxx:8069/longpolling
Это происходит от модуля с именем IM bus, а затем вызывает ошибку, поскольку это выглядит как незаконченная разработка для режима prefork.
Чтобы это работало, вы могли бы изменить nginx, чтобы перевести запрос на длинный опрос с адреса xxxx:8069/longpolling на xxxx: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;
}
Наша исключительная конфигурация odoo проста как odoorc:
workers = 5
Я надеюсь, что это спасло вас и читателя некоторое время.