開源 ERP 軟體 Odoo 提速指南
Odoo 是最流行的 ERP(企業資源計劃)軟體,它由 Python 編寫,使用 PostgreSQL 作為後端資料庫。Odoo 社區版是免費的開源軟體,它囊括了項目管理,生產、財務、記賬和銷售管理,倉儲管理,人力資源管理,甚至還有更多項目。裡面包含了 30 個核心模塊,以及超過 3000 個社區模塊。Odoo 部署了大量的模塊,資料庫里也包含了龐大的數據等等,這些都使得這個軟體比較複雜,可能會導致效率低下。Odoo 的兩個主要瓶頸在於磁碟訪問,以及資料庫查詢時間。
為了提升 Odoo 實例的性能,你可以:
- 使用一個快速磁碟驅動器來存儲(最好是 SSD)。
- 使用內存充足的 Linux VPS。
- 在 Odoo 中激活 多處理器模式 。
- 正確配置並優化 PostgreSQL 服務。
獲得一台有著更多內存的 SSD VPS
正如我們先前提到的,隨機磁碟訪問速度是 Odoo 的主要瓶頸之一。因此,要確保 Odoo 部署在一台基於 SSD 的 VPS 上。由於 Odoo 是一個對資源十分敏感的應用,因此始終要把它安裝在一台有著更多 RAM 的 VPS 上,如果可能,將整個 Odoo 實例及其資料庫載入到 RAM 中。固態磁碟驅動器尤其以隨機存取見長,而且由於 SSD 沒有任何活動部件,它們能夠取得數百倍於傳統機械硬碟驅動器的隨機存取 IOPS(LCTT譯註:即每秒讀寫操作的次數)。如果伺服器沒有採用 SSD 來驅動或提速,那麼不管你對 Odoo 做多少優化和配置都無濟於事,它仍然會很慢。所以,獲得正確的主機來部署 Odoo 是提升其性能的最重要因素。
其它 Odoo 優化包括:
在 Odoo 配置中啟用多處理器選項
要實現此功能,請定位到 openerp-server 二進位文件:
#updatedb
#locate 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).
工作進程的數量應該和分配到 VPS 的 CPU 核心數一樣,或者,如果你想為 PostgreSQL 資料庫、cron 任務、或者其它和 Odoo 實例安裝在同一台 VPS 上的其它應用預留出一些 CPU 核心,那麼你可以將工作進程數設置為一個比 VPS 上可用 CPU 核心更低的值,以避免資源耗盡。
limit-memory-soft
和 limit-memory-hard
參數不言自明,你可以使用默認值,也可以根據 VPS 上的實際可用 RAM 來進行修改。
例如,如果你的 VPS 有 8 個 CPU 核心,以及 16 GB 內存,那麼你可以將工作進程數設置為 17(CPU 核心數 x 2 + 1),limit-memory-soft
總值設置為 640 x 17 = 10880 MB,而 limit-memory-hard
總數設置為 68MB x 17 = 13056 MB,這樣,Odoo 就會有總計達 12.75 GB 的 RAM。
例如,在一台擁有 16 GB RAM 和 8 個 CPU 核心的 VPS 上,編輯 Odoo 配置文件(如 /etc/odoo-server.conf
),並添加以下行:
vi /etc/odoo-server.conf
workers = 17
limit_memory_hard = 805306368
limit_memory_soft = 671088640
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
max_cron_threads = 2
別忘了重啟 Odoo 讓修改生效。
正確配置並優化 PostgreSQL
對於 PostgreSQL 優化,及時將它更新到最新版本是一個不錯的主意。在 PostgreSQL 配置文件(pg_hba.conf
)中,有兩個設置需要修改:shared_buffers
和 effective_cache_size
。將 shared_buffers
設置為可用內存的 20%,effective_cache_size
設置為可用內存的 50%。
例如,如果 Odoo 安裝到了一台 16 GB RAM 的 SSD VPS 上,那麼在 pg_hba.conf
中使用如下設置:
vi /var/lib/postgresql/data/pg_hba.conf
shared_buffers = 3072MB
effective_cache_size = 8192MB
重啟 PostgreSQL 服務來讓修改生效。
同時,也別忘了周期性手動執行 『VACUUM』。此操作會將陳舊或臨時數據清理乾淨,但請牢記,它會大量佔用 CPU 和磁碟使用。
via: https://www.rosehosting.com/blog/how-to-speed-up-odoo/
作者:rosehosting.com 譯者:GOLinux 校對:jasminepeng
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive