DUICUO

オープンソース ERP ソフトウェア向け Odoo スピードアップ ガイド

Odooは、Pythonで記述され、バックエンドデータベースとしてPostgreSQLを使用する、業界をリードするERP(エンタープライズ・リソース・プランニング)ソフトウェアです。Odoo Community Editionは、プロジェクト管理、生産管理、財務、会計、販売管理、倉庫管理、人事管理など、幅広い機能を備えた無料のオープンソースソフトウェアです。30個のコアモジュールと3,000個以上のコミュニティモジュールが含まれています。Odooのモジュール数が多く、データベースサイズが巨大であることは、その複雑さを増し、非効率性につながる可能性があります。Odooの主なボトルネックは、ディスクアクセスとデータベースクエリ時間の2つです。

[[185589]]

Odoo インスタンスのパフォーマンスを向上させるには、次の操作を実行できます。

  • ストレージには高速なディスク ドライブを使用します (*** は SSD です)。
  • 十分なメモリを備えた Linux VPS を使用してください。
  • Odoo でマルチプロセス モードを有効にします。
  • PostgreSQL サービスを正しく構成し、最適化します。

より多くのメモリを搭載したSSD VPSを入手する

前述のように、ランダムディスクアクセス速度はOdooの主なボトルネックの1つです。そのため、OdooをSSDベースのVPSに導入することが重要です。Odooはリソースを大量に消費するアプリケーションであるため、常に十分なRAMを搭載したVPSにインストールする必要があります。理想的には、Odooインスタンス全体とそのデータベースがRAMにロードされる必要があります。ソリッドステートドライブ(SSD)はランダムアクセスに優れており、可動部品がないため、従来の機械式ハードドライブと比較して数百倍のランダムアクセスIOPS(IOPS)を実現できます。サーバーがSSDを活用または高速化しない場合、Odooをどれだけ最適化または構成しても効果はなく、速度は低下したままになります。したがって、Odooの導入に適したホストを確保することは、パフォーマンスを向上させる上で最も重要な要素です。

その他の Odoo の最適化は次のとおりです。

Odoo 構成でマルチプロセッサ オプションを有効にします。

この機能を有効にするには、openerp-server バイナリを見つけます。

  1. #更新されたデータベース
  2. #openerp-server を見つける
  3. /usr/bin/openerp-server

次のコマンドを実行します。

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

このコマンドの出力は次のようになります。

  1. 使用方法: openerp-server [オプション]
  2. オプション:
  3. --version プログラムのバージョン番号を表示して終了する 
  4. (…)
  5. マルチプロセスオプション:
  6. --workers=WORKERS ワーカーの数を指定します。0 の場合は、プリフォーク モードが無効になります。  
  7. --limit-memory-soft=LIMIT_MEMORY_SOFT  
  8. ワーカーあたりの最大許容仮想メモリ  
  9. 現在リクエスト後にワーカーがリセットされる
  10. (デフォルトは671088640、つまり 640MB)。
  11. --limit-memory-hard=LIMIT_MEMORY_HARD  
  12. ワーカーあたりの最大許容仮想メモリ  
  13. 到達すると、メモリ割り当ては失敗します(デフォルト 
  14. 805306368 または 768MB)。
  15. --limit-time-cpu=LIMIT_TIME_CPU  
  16. リクエストあたりの最大許容 CPU時間(デフォルトは60)。
  17. --limit-time-real=LIMIT_TIME_REAL  
  18. 最大許容実数 リクエストあたりの時間デフォルトは120)。
  19. --limit-request=LIMIT_REQUEST  
  20. ワーカーごとに処理されるリクエスト最大
  21. (デフォルトは8192)。

ワーカープロセスの数は、VPSに割り当てられたCPUコア数と同じにする必要があります。また、Odooインスタンスと同じVPSにインストールされているPostgreSQLデータベース、cronジョブ、その他のアプリケーション用にCPUコアを予約したい場合は、ワーカープロセスの数をVPSで利用可能なCPUコア数よりも低い値に設定することで、リソース枯渇を回避できます。

limit-memory-soft および limit-memory-hard パラメータは説明を要しません。デフォルト値を使用することも、VPS で実際に使用可能な RAM に基づいて変更することもできます。

例えば、VPSにCPUコアが8個、メモリが16GBある場合、ワーカープロセス数を17(CPUコア数×2+1)、limit-memory-softの合計値を640×17=10880MB、limit-memory-hardの合計値を68MB×17=13056MBに設定できます。これにより、OdooのRAM容量は合計12.75GBになります。

たとえば、16 GB の RAM と 8 つの CPU コアを備えた VPS では、Odoo 構成ファイル (/etc/odoo-server.conf など) を編集し、次の行を追加します。

  1. vi /etc/odoo-server.conf  
  2. 労働者 = 17
  3. limit_memory_hard = 805306368
  4. limit_memory_soft = 671088640
  5. 制限リクエスト = 8192
  6. 制限時間CPU = 60
  7. 制限時間実数 = 120
  8. 最大cronスレッド数 = 2

変更を有効にするには、Odoo を再起動することを忘れないでください。

PostgreSQLを適切に設定し最適化する

PostgreSQLの最適化のためには、最新バージョンへのアップデートをお勧めします。PostgreSQL設定ファイル(pg_hba.conf)で、`shared_buffers`と`effective_cache_size`の2つの設定を変更する必要があります。`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  
  2. 共有バッファ = 3072MB
  3. 有効キャッシュサイズ = 8192MB

変更を有効にするには、PostgreSQL サービスを再起動します。

また、定期的に手動で「VACUUM」を実行することを忘れないでください。この操作は古いデータや一時的なデータを削除しますが、CPUとディスクリソースを大量に消費することに注意してください。