OpenERP多核CPU支持
-
由于Python的天然缺陷(GIL),python代码不支持OS级别的多线程同时运行(虽然python也支持多线程,但这是模拟多线程,不是OS级别的真正多线程)。由于这个原因,python进程只能运行于单CPU(或多核CPU的单核),这使得OpenERP不能充分利用现代多核CPU,更谈不上服务器的多CPU。这个缺陷,严重影响OpenERP 的性能。
不过,python虽然不支持多线程,但是从python 2.6开始,新增加了multi_process包,支持多进程。OpenERP从6.1-1版本开始,也支持多进程。当配置成多进程模式,OpenERP启动后,系统自动启动多个WSGI服务进程,响应Web访问。
默认配置下,OpenERP的cron job和WSGI服务都运行于同一个进程内(也是唯一的进程),配置成多进程后,系统不会自动启动cron job。cron job需要另外运行于单独的进程中。
OpenERP的多进程配置参数是:workers = n, n是进程数量。默认配置是n==0,即不启动多进程。如果n>0,系统按多进程模式启动。在多进程模式,需要单独启动cron job进程。在OpenERP默认发行包里,没有单独启动cron job的代码,需要从这里下载:http://bazaar.launchpad.net/~openerp/openobject-server/6.1/view/4184/openerp-cron-worker
GIL:Global Interpreter Lock,有关技术资料参看:http://wiki.python.org/moin/GlobalInterpreterLock
OpenERP多进程支持技术资料参考:
Serving OpenERP 6.1 on multicore systems with Gunicorn: http://v6.openerp.com/node/1106 br />Deploying OpenERP Server with Gunicorn: http://thu.openerp.com/open-days-2012/gunicorn.html# -
感谢老肖!
-
http://help.openerp.com/question/1671/difference-between-built-in-multiprocessor-mode-and-gunicorn/
7.0以后已经不需要这些设置了,但缺省worker的数量未见解答。