Linux中國

開源 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 二進位文件:

#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-softlimit-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_bufferseffective_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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國