閱讀614 返回首頁    go 技術社區[雲棲]


開源 ERP 軟件 Odoo 提速指南

Odoo 是最流行的 ERP(企業資源計劃)軟件,它由 Python 編寫,使用 PostgreSQL 作為後端數據庫。Odoo 社區版是免費的開源軟件,它囊括了項目管理,生產、財務、記賬和銷售管理,倉儲管理,人力資源管理,甚至還有更多項目。裏麵包含了 30 個核心模塊,以及超過 3000 個社區模塊。Odoo 部署了大量的模塊,數據庫裏也包含了龐大的數據等等,這些都使得這個軟件比較複雜,可能會導致效率低下。Odoo 的兩個主要瓶頸在於磁盤訪問,以及數據庫查詢時間。

為了提升 Odoo 實例的性能,你可以:

  • 使用一個快速磁盤驅動器來存儲(最好是 SSD)。
  • 使用內存充足的 Linux VPS
  •   在 Odoo 中激活多處理器模式multiprocessing mode。
  • 正確配置並優化 PostgreSQL 服務。

獲得一台有著更多內存的 SSD VPS

正如我們先前提到的,隨機磁盤訪問速度是 Odoo 的主要瓶頸之一。因此,要確保 Odoo 部署在一台基於 SSD 的 VPS 上。由於 Odoo 是一個對資源十分敏感的應用,因此始終要把它安裝在一台有著更多 RAM 的 VPS 上,如果可能,將整個 Odoo 實例及其數據庫加載到 RAM 中。固態磁盤驅動器尤其以隨機存取見長,而且由於 SSD 沒有任何活動部件,它們能夠取得數百倍於傳統機械硬盤驅動器的隨機存取 IOPS(LCTT譯注:即每秒讀寫操作的次數)。如果服務器沒有采用 SSD 來驅動或提速,那麼不管你對 Odoo 做多少優化和配置都無濟於事,它仍然會很慢。所以,獲得正確的主機來部署 Odoo 是提升其性能的最重要因素。

其它 Odoo 優化包括:

在 Odoo 配置中啟用多處理器選項

要實現此功能,請定位到 openerp-server 二進製文件:


  1. #updatedb
  2. #locate openerp-server
  3. /usr/bin/openerp-server

執行以下命令:


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

該命令的輸出結果如下:


  1. Usage: openerp-server [options]
  2. Options:
  3. --version show program's version number and exit
  4. (...)
  5. Multiprocessing options:
  6. --workers=WORKERS Specify the number of workers, 0 disable prefork mode.
  7. --limit-memory-soft=LIMIT_MEMORY_SOFT
  8. Maximum allowed virtual memory per worker, when
  9. reached the worker be reset after the current request
  10. (default 671088640 aka 640MB).
  11. --limit-memory-hard=LIMIT_MEMORY_HARD
  12. Maximum allowed virtual memory per worker, when
  13. reached, any memory allocation will fail (default
  14. 805306368 aka 768MB).
  15. --limit-time-cpu=LIMIT_TIME_CPU
  16. Maximum allowed CPU time per request (default 60).
  17. --limit-time-real=LIMIT_TIME_REAL
  18. Maximum allowed Real time per request (default 120).
  19. --limit-request=LIMIT_REQUEST
  20. Maximum number of request to be processed per worker
  21. (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),並添加以下行:


  1. vi /etc/odoo-server.conf

  1. workers = 17
  2. limit_memory_hard = 805306368
  3. limit_memory_soft = 671088640
  4. limit_request = 8192
  5. limit_time_cpu = 60
  6. limit_time_real = 120
  7. 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 中使用如下設置:


  1. vi /var/lib/postgresql/data/pg_hba.conf

  1. shared_buffers = 3072MB
  2. effective_cache_size = 8192MB

重啟 PostgreSQL 服務來讓修改生效。

同時,也別忘了周期性手動執行 ‘VACUUM’。此操作會將陳舊或臨時數據清理幹淨,但請牢記,它會大量占用 CPU 和磁盤使用。

原文發布時間為:2017-03-14

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-24 16:02:41

  上一篇:go  如何修改 Linux 的 GRUB 啟動背景
  下一篇:go  《STM32庫開發實戰指南:基於STM32F4》----3.2 STM32能做什麼