オンプレミスプランで利用しているサーバーに十分なメモリがある場合でも、サイズの大きいダッシュボードまたはノートのスケジュールやパラメーターを更新しようとしたときに、「データサイズが大きいため、処理に失敗した可能性があります」いったエラーがサーバー上で表示される場合があります。このエラーはExploratory サーバーのメモリの割り当てを増やすことで解消できることがあります。
Exploratory サーバーでは、メモリの割り当てを増やすことができる場所が2か所あります。Rの実行環境と、Webサーバの実行環境です。それぞれのメモリの割り当てを増やす方法を、以下に紹介します。
テキストエディターで`ddocker-compose.yml`を開き、以下のパラメーターを`rserve`のセクションに追加します。
パラメータの詳細については、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'
変更を終えたらファイルを保存します。
オンプレミス・サーバーを再起動して、変更を有効にします。
docker-compose down
docker-compose up -d
ターミナル・ウィンドウから次のコマンドを実行して、デフォルトのexploratory
DockerイメージのDockerコンテナを起動します。
この例では、Exploratory サーバーのバージョン 7.0.9 のDockerイメージを使用します。
ご自身の環境で実施するときには、コマンド内のバージョン番号を使用しているバージョン番号に置き換えてください。
docker run -it exploratory:7.0.9 /bin/bash
次に設定ファイルを更新する必要があるため、テキストエディタをインストールします。以下は Vim エディタのインストール例です。
apt-get update
apt-get -y --no-install-recommends install vim
エディタを指定して設定ファイルの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" ],
変更を終えたらファイルを保存します。
別のターミナル・ウィンドウで次のコマンドを実行して、実行中のDockerのコンテナIDを見つけます。
docker ps
上記のコマンドにより、以下のようなテーブルが出力されます。
CONTAINER ID IMAGE COMMAND PORTS
aad6f8d956a9 exploratory:7.0.9 "/bin/bash" 6311/tcp
テーブルから Dockerコンテナのコンテナ IDを見つけます。今回の例では、aad6f8d956a9 がコンテナ IDです。複数行が出力される場合は、とコマンドのIMAGE
と/bin/bash
にexploratory:
が含まれる行を探してください。
次のコマンドを実行して、上記の変更を加えたこのコンテナを別のDockerイメージとして保存します。今回は、新しいイメージにカスタマイズしたバージョン番号 7.0.9.1 を付けます。
docker commit -c 'CMD ["./start.sh"]' -c 'EXPOSE 3000' aad6f8d956a9 exploratory:7.0.9.1
作成した新しいDockerイメージを使用してDockerコンテナを起動します。
docker run -it exploratory:7.0.9.1 /bin/bash
設定ファイルの内容を表示し、変更を確認します。
cat datablog/pm2_single.json
docker-compose.yml ファイル内で、exploratory DockerコンテナのDockerイメージのバージョンを指定する行を見つけ、そのバージョンを作成したDockerのバージョンに更新します。
...
exploratory:
image: exploratory:7.0.9
...
...
exploratory:
image: exploratory:7.0.9.1
...
オンプレミス・サーバーを再起動して、変更を有効にします。
docker-compose down
docker-compose up -d