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