我将尽力解释我在运行 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 的内部代码,否则很可能没有办法修复它。