Odoo 是最流行的 ERP(企業資源計畫)軟體, 它由 Python 編寫, 使用 PostgreSQL 作為後端資料庫。 Odoo 社區版是免費的開源軟體 -- rosehosting.com
本文導航-獲得一台有著更多記憶體的 SSD VPS …… 16%
-在 Odoo 配置中啟用多處理器選項 …… 31%
-正確配置並優化 PostgreSQL …… 75%
編譯自: https://www.rosehosting.com/blog/how-to-speed-up-odoo/作者: rosehosting.com
譯者: GOLinux
Odoo 是最流行的 ERP(企業資源計畫)軟體, 它由 Python 編寫, 使用 PostgreSQL 作為後端資料庫。 Odoo 社區版是免費的開源軟體, 它囊括了專案管理, 生產、財務、記帳和銷售管理, 倉儲管理, 人力資源管理, 甚至還有更多專案。 裡面包含了 30 個核心模組, 以及超過 3000 個社區模組。 Odoo 部署了大量的模組, 資料庫裡也包含了龐大的資料等等, 這些都使得這個軟體比較複雜, 可能會導致效率低下。 Odoo 的兩個主要瓶頸在於磁片訪問, 以及資料庫查詢時間。
為了提升 Odoo 實例的性能, 你可以:
使用一個快速磁碟機來存儲(最好是 SSD)。
使用記憶體充足的 Linux VPS[1]。
在 Odoo 中啟動
多處理器模式multiprocessing mode。
正確配置並優化 PostgreSQL 服務。
獲得一台有著更多記憶體的 SSD VPS正如我們先前提到的,
其它 Odoo 優化包括:
在 Odoo 配置中啟用多處理器選項要實現此功能, 請定位到 openerp-server 二進位檔案:
#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 = 17limit_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 優化, 及時將它更新到最新版本是一個不錯的主意。
例如, 如果 Odoo 安裝到了一台 16 GB RAM 的 SSD VPS 上, 那麼在 pg_hba.conf 中使用如下設置:
vi /var/lib/postgresql/data/pg_hba.confshared_buffers = 3072MBeffective_cache_size = 8192MB
重啟 PostgreSQL 服務來讓修改生效。
同時, 也別忘了週期性手動執行 ‘VACUUM[3]’。 此操作會將陳舊或臨時資料清理乾淨, 但請牢記, 它會大量佔用 CPU 和磁片使用。
via: https://www.rosehosting.com/blog/how-to-speed-up-odoo/
作者:rosehosting.com[4] 譯者:GOLinux 校對:jasminepeng
本文由 LCTT 原創編譯, Linux中國 榮譽推出
[1]: 記憶體充足的 Linux VPS - https://www.rosehosting.com/linux-vps-hosting.html
[2]: 基於 SSD 的 VPS - https://www.rosehosting.com/linux-vps-hosting.html
[3]: VACUUM - https://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT
[4]: rosehosting.com - https://www.rosehosting.com/