Exploratory サーバー(オンプレミス) のメモリ割り当てを増やす方法

オンプレミスプランで利用しているサーバーに十分なメモリがある場合でも、サイズの大きいダッシュボードまたはノートのスケジュールやパラメーターを更新しようとしたときに、「データサイズが大きいため、処理に失敗した可能性があります」いったエラーがサーバー上で表示される場合があります。このエラーはExploratory サーバーのメモリの割り当てを増やすことで解消できることがあります。

Exploratory サーバーでは、メモリの割り当てを増やすことができる場所が2か所あります。Rの実行環境と、Webサーバの実行環境です。それぞれのメモリの割り当てを増やす方法を、以下に紹介します。

Rの実行環境のメモリの割当を増やす方法

1. 設定ファイルを更新する

テキストエディターで`ddocker-compose.yml`を開き、以下のパラメーターを`rserve`のセクションに追加します。

  • shm_size: 共有メモリのサイズ
  • mem_limit: Dockerコンテナが利用できるメモリのサイズの上限
  • memswap_limit: Dockerコンテナが利用できるスワップのサイズの上限
  • mem_reservation: Dockerコンテナが予め予約しておくメモリのサイズ

パラメータの詳細については、Dockerのドキュメントを参照してください。それぞれのパラメーターの値は、Dockerを実行しているシステムの程度によって変わってきます。システム上でDocker以外のプロセスが稼働していない場合、システムのメモリサイズから、他のコンポーネントの実行に必要な分2GBを差し引いた値が目安になります。例えば、システムのメモリサイズが16GBの場合、14GB程度になります。以下に、メモリとスワップのサイズをそれぞれ14GB, メモリの予約サイズを1Gとする例を紹介します。

変更例:

rserve:
  image: r-exploratory:10.2.1
  shm_size: '14gb'
  mem_limit: '14gb'
  memswap_limit: '14gb'
  mem_reservation: '1gb'

変更を終えたらファイルを保存します。

2. オンプレミス・サーバーの再起動

オンプレミス・サーバーを再起動して、変更を有効にします。

docker-compose down
docker-compose up -d

Webサーバーの実行環境のメモリの割当を増やす方法

1. exploratory DockerイメージのDockerコンテナを実行する

ターミナル・ウィンドウから次のコマンドを実行して、デフォルトのexploratory DockerイメージのDockerコンテナを起動します。

この例では、Exploratory サーバーのバージョン 7.0.9 のDockerイメージを使用します。

ご自身の環境で実施するときには、コマンド内のバージョン番号を使用しているバージョン番号に置き換えてください。

docker run -it exploratory:7.0.9 /bin/bash

2. 設定ファイルを更新する

2.1 テキストエディタをインストールする

次に設定ファイルを更新する必要があるため、テキストエディタをインストールします。以下は Vim エディタのインストール例です。

apt-get update
apt-get -y --no-install-recommends install vim

2.2 設定ファイルを更新する

エディタを指定して設定ファイルのdatablog/pm2_single.jsonを開きます。

vim datablog/pm2_single.json

以下のようにnode_argsの行に--max-old-space-size=4096" のパラメーターを追加します。

このときの単位はメガバイトですので、4096メガバイトつまりは4GB を意味します。サーバーにより大きなサイズのメモリがある場合には、より大きな値を指定します。

変更前:

"node_args": [ "--harmony" ],

変更後:

"node_args": [ "--harmony", "--max-old-space-size=4096" ],

変更を終えたらファイルを保存します。

3. 変更を別の Docker イメージとして保存する

別のターミナル・ウィンドウで次のコマンドを実行して、実行中のDockerのコンテナIDを見つけます。

docker ps

上記のコマンドにより、以下のようなテーブルが出力されます。

CONTAINER ID        IMAGE                  COMMAND         PORTS       
aad6f8d956a9        exploratory:7.0.9      "/bin/bash"    6311/tcp     

テーブルから Dockerコンテナのコンテナ IDを見つけます。今回の例では、aad6f8d956a9 がコンテナ IDです。複数行が出力される場合は、とコマンドのIMAGE/bin/bashexploratory:が含まれる行を探してください。

次のコマンドを実行して、上記の変更を加えたこのコンテナを別のDockerイメージとして保存します。今回は、新しいイメージにカスタマイズしたバージョン番号 7.0.9.1 を付けます。

docker commit  -c 'CMD ["./start.sh"]' -c 'EXPOSE 3000' aad6f8d956a9  exploratory:7.0.9.1

4. 新しい Docker イメージに変更が加えられていることを確認する

作成した新しいDockerイメージを使用してDockerコンテナを起動します。

docker run -it exploratory:7.0.9.1 /bin/bash

設定ファイルの内容を表示し、変更を確認します。

cat datablog/pm2_single.json

5. オンプレミス・サーバーからカスタマイズしたexploratory Docker イメージを使用する

docker-compose.yml ファイル内で、exploratory DockerコンテナのDockerイメージのバージョンを指定する行を見つけ、そのバージョンを作成したDockerのバージョンに更新します。

変更前:

...
  exploratory:
    image: exploratory:7.0.9
...

変更後:

...
  exploratory:
    image: exploratory:7.0.9.1
...

6. オンプレミス・サーバーの再起動

オンプレミス・サーバーを再起動して、変更を有効にします。

docker-compose down
docker-compose up -d
Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio