LoginSignup
0
0

More than 5 years have passed since last update.

dockerで起動しているSolrのメモリを増やす

Posted at

docker(docker-compose)で起動しているsolrのメモリをデフォルトから1Gに変更する

docker-compose.ymlを以下のように

docker-compose.ymlを使わない場合、以下を参考にコマンドで。

docker-compose.yml
version: '2'
services:
    solr:
        image: solr
        ports:
         - "8983:8983"
        volumes:
         - /data:/opt/solr/server/solr/mycores
         - /var/log/solr:/opt/solr/server/logs
         - /home/junk/solr/entrypoint/set-heap.sh:/docker-entrypoint-initdb.d/set-heap.sh
        restart: always
  • 公式ドキュメントとの違いは、sedの置き換え前パスに.*をつけている点(コメント化されてても有効にするため)

  • ログの出力もVしたので、以下でオーナーを変更

$ sudo mkdir /var/log/solr
$ sudo chown 8983:8983 /var/log/solr

set-heap.shファイルを/home/junk/solr/entrypoint/フォルダに作成します。

set-heap.sh
#!/bin/bash
set -e
cp /opt/solr/bin/solr.in.sh /opt/solr/bin/solr.in.sh.orig
sed -e 's/.*SOLR_HEAP=".*"/SOLR_HEAP="1024m"/' </opt/solr/bin/solr.in.sh.orig >/opt/solr/bin/solr.in.sh
grep '^SOLR_HEAP=' /opt/solr/bin/solr.in.sh

フォルダとファイルのオーナーを変更

$ sudo chown -R 8983:8983 /home/junk/solr/entrypoint

再起動

$ docker-compose restart

確認

$ sudo docker logs solr_solr_1 | head

/opt/docker-solr/scripts/solr-foreground: running /docker-entrypoint-initdb.d/set-heap.sh
SOLR_HEAP="1024m"

SOLR_HEAP="1024m"が出ていればOK。
あとか管理画面からJVM-Memoryを確認しても良い。

トラブルシューティングとして、set-heap.shが実行されているか?
・実行されていない → Volume、パス、オーナーを確認する
・実行されている → set-heap.shの中身を確認

solr.in.shによっては上記set-heap.shで上手く書き換えられない場合があるかもしれないのでその場合、コンテナに入って直接ファイルが書き換わるかコマンドを実行して確認する。

個人的メモ

  • コンテナに入らないでdockerで起動しているsolrのpostコマンドを実行する
echo '/opt/solr/bin/post -h' | sudo docker exec -i solr_solr_1 /bin/bash
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0