Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is the database of a Meteor app that has been run once (and never loaded) taking up nearly 3GB?

Tags:

mongodb

meteor

UPDATE: this was fixed after Meteor v0.4 (2012). For historical purposes:


Excerpt from du:

2890768 ./Code/Meteor/QuarterTo/.meteor/local/db/journal
2890772 ./Code/Meteor/QuarterTo/.meteor/local/db
2890776 ./Code/Meteor/QuarterTo/.meteor/local
2890788 ./Code/Meteor/QuarterTo/.meteor
2890804 ./Code/Meteor/QuarterTo

I merely ask because it was in my Dropbox and pushed me over my limit.

like image 449
Kara Brightwell Avatar asked Apr 12 '12 07:04

Kara Brightwell


4 Answers

When meteor run is executed, it starts mongodb with default mongo settings, so it creates (massive) prealloc files in .meteor/local/db/journal.

There is no obvious way to disable this behavior. What I have done as a workaround is change the file app/lib/mongo_runner.js and add a --nojournal parameter that gets passed to mongodb at startup.

I created an issue for this: https://github.com/meteor/meteor/issues/15

like image 153
zwippie Avatar answered Nov 16 '22 01:11

zwippie


Maybe you can use smallfiles=true parameter for mongoDB? It will create smallest prealloc files

like image 43
solisoft Avatar answered Nov 16 '22 01:11

solisoft


You can turn off preallocation by passing the --noprealloc arg to mongod. The downside is that there will be pauses each time a new storage file needs to be allocated. Depending on the filesystem you are using (e.g., ext3 vs. ext4), this could result in noticeable latency for a user.

like image 41
Robert Stewart Avatar answered Nov 15 '22 23:11

Robert Stewart


The commands that work for me are:

  1. stop mongodb instance if it is running

sudo service mongod stop

  1. create new mongodb instance without requiring 3+GB preallocated space and use smallfiles.

mongod --noprealloc --smallfiles

If you are getting “ERROR: dbpath (/data/db) does not exist.” when running 2, then run these commands before 2. sudo mkdir -p /data/db/

sudo chown `id -u` /data/db

like image 41
Vinay Vemula Avatar answered Nov 16 '22 00:11

Vinay Vemula