TransWikia.com

Odoo 10 CE performance tuning - enabling workers

Server Fault Asked on December 1, 2021

I will try explain the best I can the problem I have with Odoo 10 CE running on Ubuntu 16.04 LTS VM placed on on-premise HP Proliant G6 running hyper-v.

Physical server specs:

  • Processor Intel(R) Xeon(R) CPUX5560 @ 2.80GHz, 2800 Mhz, 4 Core(s), 8 Logical Processor(s)
  • OS Name Microsoft Windows Server 2012 R2 Datacenter
  • Installed Physical Memory (RAM) 16,0 GB
  • 5x 10k SAS drives raid 1+0 (one hot spare)

Ubuntu VM specs:

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:~$

4Gb RAM machine

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

I would like to enable workers to get better performance. There are only few users using the odoo instance.

Can someone please help me with error which I get every time when I change workers to value > 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

This is my odoo-server.conf (part of it)

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

Can you please help me with this error?
Also I’m running Odoo on apache2 with reverse proxy.
Maybe my values in conf file are not correct?

2 Answers

This is NORMAL behaviour.

This happens when clients start to open two or more browser windows/tabs. Longpolling happens in n+1 windows and WILL trigger Bus unavailable.

This error can be ignored. There is most probably no way to remediate it unless you temper with odoo's internal code.

Answered by HLD on December 1, 2021

I just face similar problem with you then dig around until found out the solution @Carlo

The error is happened as conflict of odoo development for Live chat. Without modify reverse proxy nginx:

longpolling request is going to address x.x.x.x:8069/longpolling

Which it's handel by module named IM bus, then cause error as it look like unfinished development for prefork mode.

To make it work, you could modify nginx to reverse longpolling request from address x.x.x.x:8069/longpolling to x.x.x.x:8072.

Whcich served by class GeventServer as configuration port longpolling_port.

Our experimental nginx configuration is simple as:

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;
  }

Our exceprimantal odoo configuration is simple as odoorc:

workers = 5

I hope it saved you and the reader some time.

Answered by apisak Srihamat on December 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP