天天看点

开源 ERP 软件 Odoo 提速指南

odoo 是最流行的 erp(企业资源计划)软件,它由 python 编写,使用 postgresql 作为后端数据库。odoo 社区版是免费的开源软件,它囊括了项目管理,生产、财务、记账和销售管理,仓储管理,人力资源管理,甚至还有更多项目。里面包含了 30 个核心模块,以及超过 3000 个社区模块。odoo 部署了大量的模块,数据库里也包含了庞大的数据等等,这些都使得这个软件比较复杂,可能会导致效率低下。odoo 的两个主要瓶颈在于磁盘访问,以及数据库查询时间。

为了提升 odoo 实例的性能,你可以:

使用一个快速磁盘驱动器来存储(最好是 ssd)。

  在 odoo 中激活多处理器模式multiprocessing mode。

正确配置并优化 postgresql 服务。

<a target="_blank"></a>

其它 odoo 优化包括:

要实现此功能,请定位到 openerp-server 二进制文件:

<code>#updatedb</code>

<code>#locate openerp-server</code>

<code></code>

<code>/usr/bin/openerp-server</code>

执行以下命令:

<code>#/usr/bin/openerp-server --help</code>

该命令的输出结果如下:

<code>usage: openerp-server [options]</code>

<code>options:</code>

<code>--version show program's version number and exit</code>

<code>(...)</code>

<code>multiprocessing options:</code>

<code>--workers=workers specify the number of workers, 0 disable prefork mode.</code>

<code>--limit-memory-soft=limit_memory_soft</code>

<code>maximum allowed virtual memory per worker, when</code>

<code>reached the worker be reset after the current request</code>

<code>(default 671088640 aka 640mb).</code>

<code>--limit-memory-hard=limit_memory_hard</code>

<code>reached, any memory allocation will fail (default</code>

<code>805306368 aka 768mb).</code>

<code>--limit-time-cpu=limit_time_cpu</code>

<code>maximum allowed cpu time per request (default 60).</code>

<code>--limit-time-real=limit_time_real</code>

<code>maximum allowed real time per request (default 120).</code>

<code>--limit-request=limit_request</code>

<code>maximum number of request to be processed per worker</code>

<code>(default 8192).</code>

工作进程的数量应该和分配到 vps 的 cpu 核心数一样,或者,如果你想为 postgresql 数据库、cron 任务、或者其它和 odoo 实例安装在同一台 vps 上的其它应用预留出一些 cpu 核心,那么你可以将工作进程数设置为一个比 vps 上可用 cpu 核心更低的值,以避免资源耗尽。

<code>limit-memory-soft</code> 和 <code>limit-memory-hard</code> 参数不言自明,你可以使用默认值,也可以根据 vps 上的实际可用 ram 来进行修改。

例如,如果你的 vps 有 8 个 cpu 核心,以及 16 gb 内存,那么你可以将工作进程数设置为 17(cpu 核心数 x 2 + 1),<code>limit-memory-soft</code> 总值设置为 640 x 17 = 10880 mb,而 <code>limit-memory-hard</code> 总数设置为 68mb x 17 = 13056 mb,这样,odoo 就会有总计达 12.75 gb 的 ram。

例如,在一台拥有 16 gb ram 和 8 个 cpu 核心的 vps 上,编辑 odoo 配置文件(如 <code>/etc/odoo-server.conf</code>),并添加以下行:

<code>vi /etc/odoo-server.conf</code>

<code>workers = 17</code>

<code>limit_memory_hard = 805306368</code>

<code>limit_memory_soft = 671088640</code>

<code>limit_request = 8192</code>

<code>limit_time_cpu = 60</code>

<code>limit_time_real = 120</code>

<code>max_cron_threads = 2</code>

别忘了重启 odoo 让修改生效。

对于 postgresql 优化,及时将它更新到最新版本是一个不错的主意。在 postgresql 配置文件(<code>pg_hba.conf</code>)中,有两个设置需要修改:<code>shared_buffers</code> 和 <code>effective_cache_size</code>。将<code>shared_buffers</code> 设置为可用内存的 20%,<code>effective_cache_size</code> 设置为可用内存的 50%。

例如,如果 odoo 安装到了一台 16 gb ram 的 ssd vps 上,那么在 <code>pg_hba.conf</code> 中使用如下设置:

<code>vi /var/lib/postgresql/data/pg_hba.conf</code>

<code>shared_buffers = 3072mb</code>

<code>effective_cache_size = 8192mb</code>

重启 postgresql 服务来让修改生效。

原文发布时间为:2017-03-14

本文来自云栖社区合作伙伴“linux中国”