Help us understand the problem. What is going on with this article?

MongoDB 3.2+WiredTigerでもメモリ使用量を抑えたい! (Debian 9)

More than 1 year has passed since last update.

MongoDB 3系からWiredTigerが選べるようになり,メモリ使用量が制限できるようになりました.
storage.wiredTiger.engineConfig.cacheSizeGB オプションで指定できます.

MongoDB 3.4以降は最低256MB

MongoDB 3.4以降,設定下限が256MBに下がりました.

Changed in version 3.4: Values can range from 256MB to 10TB and can be a float.
(訳: 3.4での変更: 値は256MB~10TBまでのfloat(小数)で指定可能です)
Configuration File Options — MongoDB Manual 3.4 #storage.wiredTiger.engineConfig.cacheSizeGB

MongoDB 3.2までは最低1GB

しかし,MongoDB 3.2までは,設定下限は1GBです.0.5とかを指定しても起動しません.
VPSサーバで運用しようとすると,なかなかつらいところがあります.

by default, will use the larger of either:

  • 60% of RAM minus 1 GB, or
  • 1 GB.

(訳: デフォルトでは,総メモリの60%から1GB引いた容量か,1GBのどちらか大きい方になります)
Configuration File Options — MongoDB Manual 3.2 #storage.wiredTiger.engineConfig.cacheSizeGB

抜け道

しかし抜け道があります.configStringに指定できるというものです.

Ramon Fernandez added a comment - Jan 28 2016 01:45:21 PM GMT+0000
Jeroen Vijfhuizen, this works for me, please give it a try:

storage:
 wiredTiger:
  engineConfig:
    configString : cache_size=345M

(意訳: これでうまくいったから試してみて)
[SERVER-22274] WiredTiger cache size is only configurable in whole gigabytes. - MongoDB

試した

/etc/mongodb.conf (Debian 9)で,cache_size=128MとしてドキュメントをInsertしまくってみました.

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mongodb   3339  2.8 10.1 549896 207776 ?       Ssl   2月17 135:26 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf

以前は1GBまで膨らんでいましたが,今回は200MB程度に抑えられています.うまくいったようです!

おわりに

Debian 9 (Stretch)でもMongoDB 3.4以降が使えたら良かったのですが,
執筆時点でstretchのリポジトリに入っているのがMongoDB 3.2で,MongoDB公式はまだDebian 8止まりJIRAを見るとそろそろ出そうな感じはする)という状態で,MongoDB 3.2でなんとかする方法を模索したのでした.

no_clock
P2P地震情報とかも作ってます.
https://www.nyamikan.net/
m3dev
インターネット、最新IT技術を活用し日本・世界の医療を改善することを目指します
https://m3.recruitment.jp/engineer/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away