私は、マップ内に約500Kのurisを保持し、その存在(cts:search
とcts:document-query
)をデータベースでチェックし、diffを返すレポート生成用のxqueryを持っています。しかし、同時のリクエストで同じE-nodeにヒットした場合、応答時間が遅くなります。どのくらいのメモリマップを消費していますか?
マップで消費できるメモリサイズに上限はありますか? どのような場合でもマップをディスクにスワップできますか?
私は、マップ内に約500Kのurisを保持し、その存在(cts:search
とcts:document-query
)をデータベースでチェックし、diffを返すレポート生成用のxqueryを持っています。しかし、同時のリクエストで同じE-nodeにヒットした場合、応答時間が遅くなります。どのくらいのメモリマップを消費していますか?
マップで消費できるメモリサイズに上限はありますか? どのような場合でもマップをディスクにスワップできますか?
各フォレストが管理サーバーで使用しているメモリ量を確認できます。フォレストに行き、ステータスタブをクリックし、下にスクロールします。 「メモリ内サイズ」は、マップされたファイルサイズの合計です。 xdmp:forest-status
を使用して、この情報をXQueryプログラムで収集することもできます。
メモリ消費量は、OSのアドレス空間とその仮想メモリの制限(スワップ領域)によって制限されます。サーバのメモリ消費量が使用可能な物理メモリを超えて増加すると、OSはページをディスクにスワップします。これはパフォーマンスに深刻な影響を与える可能性があります。 OSスワップの使用率を監視し、OSスワップの使用率が減速の原因であるかどうかを確認します。
マップをデータベース自体にXMLとして保存できますが、それを使用するにはメモリにロードする必要があります。サーバーフィールドとして格納することもできますが、メモリにロードする必要があります。しかし、500kのエントリを持つマップを構築するにはかなりの時間がかかります。そうする価値があるかもしれません。一方、地図を最新の状態に維持するにはどうすればよいでしょうか?