主页 > 文档 > ERP开发文档 > 系统优化 >
联系方式Contact
地 址:广东省广州市白云区太和镇龙归龙兴西路14号云天大厦 公司名称:广州众谛信息科技有限公司 售前咨询:177-7459-3039 售后技术:020-22043323 咨询Q Q:124412206 邮 箱:info@zodioo.com
84301&verifier=078cedea&colors=0593d3,ffffff,666666,0593d3,0477ab&dpc=1">

odooERP系统配置文件优化

阅读:

      Odoo是一个最受欢迎的ERP(企业资源计划)软件, 它以Python作为开发语言,以PostgreSQL作为后端数据库。Odoo社区版是包含仓储管理、采购管理、销售管理、生产管理、项目管理、人力资源管理、财务、收付款等诸多功能的开源免费软件,包含大约30个核心模块以及超过3000个社区模块。Odoo是部署了很多模块、在数据库中存储了大量数据的复杂系统,因此往往出现性能问题。其中Odoo中最典型的两个瓶颈是磁盘读写效率和数据库查询效率。在本教程中我们简单讲一下如何优化Odoo。

 

为提高Odoo实例的性能,请确保使用:

  • 一个高效磁盘用以存储数据(最好是SSD)
  • 服务器配置较多内存并安装Linux系统(可以选择 Linux VPS)
  • 激活Odoo的多进程模式
  • 正确配置和优化PostgreSQL数据库

 

 

1. 准备一台配置尽可能多内存的服务器(或VPS)

       前面提到,随机磁盘读写是Odoo的主要瓶颈之一,所以要确保Odoo运行在配置SSD的主机上(或VPS)。因为Odoo是资源密集性应用系统,如果有可能,尽量把整个Odoo实例和数据库都载入数据库,所以有条件的话强烈建议分配尽可能多的内存给Odoo。固态硬盘由于没有运动部件,所在在随机读写方面性能优异,可以实现比传统硬盘高上百倍的随机访问IOPS。如果服务器不快或者未使用SSD,则无论如何优化,Odoo的性能肯定是相对比较低的。部署在合适配置的服务器上是提高Odoo性能的一个重要因素。

 

其他优化措施还有:

 

2. 启用Odoo的多进程模式

要启用多进程模式,需要通过服务器参数来配置。可以通过openerp-server可执行程序来获取可用的服务器参数:

#以下在Linux上操作

#查找openerp-server的位置
 

	
/usr/bin/openerp-server

运行命令:
 

	
#/usr/bin/openerp-server --help

输出信息如下:

Usage: openerp-server [options]
Options:
  --version             show program's version number and exit
  (...)
  Multiprocessing options:
    --workers=WORKERS   Specify the number of workers, 0 disable prefork mode.
    --limit-memory-soft=LIMIT_MEMORY_SOFT
                        Maximum allowed virtual memory per worker, when
                        reached the worker be reset after the current request
                        (default 671088640 aka 640MB).
    --limit-memory-hard=LIMIT_MEMORY_HARD
                        Maximum allowed virtual memory per worker, when
                        reached, any memory allocation will fail (default
                        805306368 aka 768MB).
    --limit-time-cpu=LIMIT_TIME_CPU
                        Maximum allowed CPU time per request (default 60).
    --limit-time-real=LIMIT_TIME_REAL
                        Maximum allowed Real time per request (default 120).
    --limit-request=LIMIT_REQUEST
                        Maximum number of request to be processed per worker
                        (default 8192).

       如果是只运行Odoo的主机,可以将Worker(工作进程数)设置为CPU核心数的2倍+1(请参考官方文档),如果Odoo跟PostgreSQL或其他应用运行在同一主机上,则适当减少Worker数,以免Odoo占用全部资源导致其他问题。

limit-memory-soft 和 limit-memory-hard 参数的含义很直观,你可以保留默认值或根据主机的内存相应调整。

例如:如果主机有8CPU和16GB内存,则:

 

  • Worker数设置为 17 (CPU 核数 * 2 + 1), 
  • 总 limit-memory-soft 值设置为 640 x 17 = 10880 MB , 
  • 总 limit-memory-hard 设置为 768MB x 17 = 13056 MB, 

 

这样,Odoo最多使用12.75GB内存。

在8核16GB内存的主机上,配置Odoo配置文件 (例如: /etc/odoo-server.conf)如下:
 

vi /etc/odoo-server.conf
workers = 17
limit_memory_hard = 13690208256
limit_memory_soft = 11408506880
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
max_cron_threads = 2

最后别忘了重启Odoo以使配置生效。

3. 正确配置并优化POSTGRESQL

       对于PostgreSQL的优化,一个好主意是把PostgreSQL更新到版本(对于Odoo来说,冒然升级PostgreSQL有风险,升级了之后,不同版本PostgreSQL导出的数据库备份可能无法导入,所以还是建议使用Odoo官方使用的版本)。

      PostgreSQL配置文件 (postgresql.conf) 中有两个参数需要修改一下:shared_buffers 和effective_cache_size。设置 shared_buffers 为可用内存的 20% , 设置 effective_cache_size 为可用内存的50%。

vi /var/lib/postgresql/data/postgresql.conf
shared_buffers = 3072MB
effective_cache_size = 8192MB


最后,记得重启PostgreSQL以使配置生效。

 

4. 定期清理临时数据

      另外,不要忘了定时手工执行PostgreSQL的“VACUUM”命令(请参考PostgreSQL的官方文档)。“Vacuuming”会清理状态数据和临时数据,但要注意的是该命令会占用很高的CPU和磁盘IO。

 

---------------------------------------------

康虎软件工作室是为中小企业提供信息化解决方案的专业工作室。

康虎软件工作室的康虎云报表一款适用于绝大多数B/S系统的打印软件,为B/S系统提供媲美于C/S系统的打印效果和打印体验。

康虎软件工作室还为企业提供Odoo实施及二次开发服务。

 

评论

发表评论

 
QQ在线咨询
售前咨询热线
177-7459-3039
售后服务热线
020-22043323
返回顶部