This is a cache of https://fess.codelibs.org/ja/15.3/config/setup-memory.html. It is a snapshot of the page at 2025-11-07T00:16:44.077+0000.
メモリ設定

メニュー

メモリ設定

概要

Java アプリケーションでは、プロセスごとに使用する最大ヒープメモリを設定する必要があります。 Fess では、以下の3つのコンポーネントでそれぞれメモリ設定を行います。

  • Fess ウェブアプリケーション

  • クローラープロセス

  • OpenSearch

適切なメモリ設定を行うことで、パフォーマンスの向上と安定した動作を実現できます。

Fess ウェブアプリケーションのメモリ設定

設定が必要な場合

以下のような場合にメモリサイズの調整を検討してください。

  • fess.log に OutOfMemory エラーが記録される

  • 大量の同時アクセスを処理する必要がある

  • 管理画面の操作が遅い、またはタイムアウトする

デフォルトのメモリサイズは、一般的な利用では十分ですが、負荷が高い環境では増量が必要です。

環境変数による設定

環境変数 FESS_HEAP_SIZE を設定します。

export FESS_HEAP_SIZE=2g

単位:

  • m: メガバイト

  • g: ギガバイト

RPM/DEBパッケージの場合

RPMパッケージでインストールした場合は、/etc/sysconfig/fess を編集します。

FESS_HEAP_SIZE=2g

DEBパッケージの場合は、/etc/default/fess を編集します。

FESS_HEAP_SIZE=2g

警告

メモリサイズを変更した後は、Fess サービスを再起動する必要があります。

推奨メモリサイズ

環境 推奨ヒープサイズ 備考
開発・テスト環境 512m〜1g 小規模なインデックス
小規模本番環境 1g〜2g 数万〜数十万ドキュメント
中規模本番環境 2g〜4g 数十万〜数百万ドキュメント
大規模本番環境 4g〜8g 数百万以上のドキュメント

クローラーのメモリ設定

設定が必要な場合

以下のような場合にクローラーのメモリサイズを増やす必要があります。

  • 並列クロール数を増やす場合

  • 大きなファイルをクロールする場合

  • クロール実行中に OutOfMemory エラーが発生する場合

設定方法

app/WEB-INF/classes/fess_config.properties または /etc/fess/fess_config.properties を編集します。

jvm.crawler.options=-Xmx512m

例えば、1GB に変更する場合:

jvm.crawler.options=-Xmx1g

注釈

この設定は、クローラープロセス単位(スケジューラーのジョブ単位)で適用されます。 複数のクロールジョブを同時に実行する場合は、それぞれのジョブで指定したメモリが使用されます。

推奨設定

  • 通常のWebクロール: 512m〜1g

  • 大量並列クロール: 1g〜2g

  • 大きなファイルのクロール: 2g〜4g

詳細なJVMオプション

クローラーの詳細なJVMオプションは、jvm.crawler.options で設定できます。 デフォルトの設定には、以下のような最適化が含まれています。

主要なオプション:

オプション 説明
-Xms128m -Xmx512m 初期ヒープサイズと最大ヒープサイズ
-XX:MaxMetaspaceSize=128m Metaspaceの最大サイズ
-XX:+UseG1GC G1ガベージコレクタの使用
-XX:MaxGCPauseMillis=60000 GC停止時間の目標値(60秒)
-XX:-HeapDumpOnOutOfMemoryError OutOfMemory時のヒープダンプを無効化

OpenSearch のメモリ設定

重要な考慮事項

OpenSearch では、以下の2点を考慮してメモリを設定する必要があります。

  1. Javaヒープメモリ: OpenSearch のプロセスで使用

  2. OSファイルシステムキャッシュ: 検索パフォーマンスに重要

警告

Javaヒープメモリを大きくしすぎると、OSファイルシステムキャッシュに 使用できるメモリが減少し、検索パフォーマンスが低下します。

設定方法

Linux環境

OpenSearch のヒープメモリは、環境変数またはOpenSearch の設定ファイルで指定します。

環境変数で設定:

export OPENSEARCH_HEAP_SIZE=2g

または、config/jvm.options を編集:

-Xms2g
-Xmx2g

注釈

最小ヒープサイズ(-Xms)と最大ヒープサイズ(-Xmx)は同じ値に設定することを推奨します。

Windows環境

config\jvm.options ファイルを編集します。

-Xms2g
-Xmx2g

推奨メモリサイズ

インデックスサイズ 推奨ヒープサイズ 推奨合計メモリ
〜10GB 2g 4GB以上
10GB〜50GB 4g 8GB以上
50GB〜100GB 8g 16GB以上
100GB以上 16g〜31g 32GB以上

警告

OpenSearch のヒープメモリは 32GB を超えないように設定してください。 32GB を超えると、Compressed OOP が無効になりメモリ効率が低下します。

ベストプラクティス

  1. 物理メモリの50%をヒープに割り当て

    サーバーの物理メモリの約50%を OpenSearch のヒープに割り当てます。 残りはOSとファイルシステムキャッシュに使用されます。

  2. 最大31GBまで

    ヒープサイズは最大31GBまでとし、それ以上必要な場合はノードを増やします。

  3. 本番環境での確認

    OpenSearch の公式ドキュメントを参照し、環境に応じた最適な設定を行ってください。

サジェスト・サムネイル処理のメモリ設定

サジェスト生成プロセス

サジェスト生成処理のメモリ設定は、jvm.suggest.options で設定します。

jvm.suggest.options=-Xmx256m

デフォルトでは以下の設定が使用されます:

  • 初期ヒープ: 128MB

  • 最大ヒープ: 256MB

  • Metaspace最大: 128MB

サムネイル生成プロセス

サムネイル生成処理のメモリ設定は、jvm.thumbnail.options で設定します。

jvm.thumbnail.options=-Xmx256m

デフォルトでは以下の設定が使用されます:

  • 初期ヒープ: 128MB

  • 最大ヒープ: 256MB

  • Metaspace最大: 128MB

注釈

サムネイル生成で大きな画像を処理する場合は、メモリを増やす必要があります。

メモリ監視とチューニング

メモリ使用状況の確認

Fess のメモリ使用状況

管理画面の「システム情報」で確認できます。

または、JVMの監視ツールを使用:

jps -l  # Fessプロセスを確認
jstat -gcutil <PID> 1000  # GC統計を1秒ごとに表示

OpenSearchのメモリ使用状況

curl -X GET "localhost:9201/_nodes/stats/jvm?pretty"
curl -X GET "localhost:9201/_cat/nodes?v&h=heap.percent,ram.percent"

メモリ不足の兆候

以下のような症状が現れた場合、メモリ不足の可能性があります。

Fess ウェブアプリケーション:

  • レスポンスが遅い

  • OutOfMemoryError がログに記録される

  • プロセスが予期せず終了する

クローラー:

  • クロールが途中で停止する

  • OutOfMemoryErrorfess_crawler.log に記録される

  • 大きなファイルのクロールに失敗する

OpenSearch:

  • 検索が遅い

  • インデックス作成が遅い

  • circuit_breaker_exception エラーが発生する

チューニング手順

  1. 現在のメモリ使用状況を確認

    各コンポーネントのメモリ使用状況を監視します。

  2. ボトルネックを特定

    どのコンポーネントがメモリ不足かを特定します。

  3. 段階的に増加

    一度に大きく増やすのではなく、25-50%ずつ増やして効果を確認します。

  4. システム全体のバランスを考慮

    各コンポーネントの合計メモリが物理メモリを超えないようにします。

  5. 継続的な監視

    メモリ使用状況を継続的に監視し、必要に応じて調整します。

メモリリーク対策

メモリリークが疑われる場合:

  1. ヒープダンプの取得

jmap -dump:format=b,file=heap.bin <PID>
  1. ヒープダンプの分析

    Eclipse Memory Analyzer (MAT) などのツールで分析します。

  2. 問題の報告

    メモリリークを発見した場合は、GitHub Issuesで報告してください。

トラブルシューティング

OutOfMemoryError が発生する

Fess ウェブアプリケーション:

  1. FESS_HEAP_SIZE を増やします。

  2. 同時アクセス数を制限します。

  3. ログレベルを下げて、ログ出力によるメモリ使用を減らします。

クローラー:

  1. jvm.crawler.options-Xmx を増やします。

  2. 並列クロール数を減らします。

  3. 大きなファイルを除外するようクロール設定を調整します。

OpenSearch:

  1. ヒープサイズを増やします(最大31GBまで)。

  2. インデックスのシャード数を見直します。

  3. クエリの複雑さを確認します。

GCによる停止時間が長い

  1. G1GCの設定を調整します。

  2. ヒープサイズを適切に設定します(大きすぎても小さすぎてもGCが頻発)。

  3. より新しいJavaバージョンへの更新を検討します。

メモリ設定後も性能が改善しない

  1. CPU、ディスクI/O、ネットワークなど他のリソースを確認します。

  2. インデックスの最適化を行います。

  3. クエリやクロール設定を見直します。

参考情報