Odoo 10 CE 性能调优 - 赋能工人

Odoo 10 CE 性能调优 - 赋能工人

我将尽力解释我在运行 hyper-v 的内部 HP Proliant G6 上的 Ubuntu 16.04 LTS VM 上运行 Odoo 10 CE 时遇到的问题。

物理服务器规格:

  • 处理器 Intel(R) Xeon(R) CPUX5560 @ 2.80GHz, 2800 Mhz, 4 核, 8 逻辑处理器
  • 操作系统名称 Microsoft Windows Server 2012 R2 Datacenter
  • 已安装物理内存 (RAM) 16,0 GB
  • 5x 10k SAS 驱动器 raid 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:~$

4Gb RAM 机器

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

您能帮我解决这个错误吗?
另外,我在 apache2 上使用反向代理运行 Odoo。
也许我在 conf 文件中的值不正确?

答案1

我刚好遇到和你类似的问题然后四处寻找直到找到解决方案@Carlo

错误是由于 odoo 开发与 Live chat 冲突而发生的。如果不修改反向代理 nginx:

longpolling 请求将到达地址 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

我希望它能为您和读者节省一些时间。

答案2

这是正常行为。

当客户端开始打开两个或更多浏览器窗口/选项卡时,就会发生这种情况。长轮询发生在 n+1 个窗口中,并将触发总线不可用。

此错误可以忽略。除非您篡改 odoo 的内部代码,否则很可能没有办法修复它。

相关内容