realm / realm-object-server

Tracking of issues related to the Realm Object Server and other general issues not related to the specific SDK's
https://realm.io
293 stars 42 forks source link

ROS demands big server storage and RAM #357

Closed howdyhyber closed 6 years ago

howdyhyber commented 6 years ago

ROS demands big server storage and RAM.

ROS eats a lot of memory whenever i open it, which causes the ros to restart.

This is the error:

info: [sync] HTTP Connection[20]: Connection is closed after HTTP response. 0|npm | terminate called after throwing an instance of 'std::bad_alloc' 0|npm | what(): std::bad_alloc 0|npm | Aborted (core dumped)

fxmeister commented 6 years ago

Same here, I think. I receive the error "terminate called after throwing an instance of 'realm::OutOfDiskSpace' 0|Crypto-P | what(): posix_fallocate() failed: No space left on device"

If the @realm-admin team could provide specifications for recommended system memory and disk space, we would all be saved a lot of trouble.

ianpward commented 6 years ago

We recommend 4GB RAM and 40GB Storage - you may need to get away with less depending on your use case. We recommend experimenting and up the limits if you run into errors around hardware limitations.

Jonsapps commented 6 years ago

I am experancing the same sort of issues. My server has 16GB RAM and 60GB storage. My realm is 4GB and whenever an inital sync is started the server runs out of memory within a min and the sync never completes for the user. I have tried many combinations of enabling/disabling log compaction along with varying sizes of maxdownloadsize none of which seem to make any difference, at this rate my server will need crazy high specs as my realm continues to grow.

ianpward commented 6 years ago

@Jonsapps On what version of ROS? The latest version of ROS has log compaction and a new vacuum tool on the server-side which will compress the Realms. I'd recommend taking a look at the latest version.

Jonsapps commented 6 years ago

that sounds very useful, is there any documentation on the vacuum tool?

ianpward commented 6 years ago

We are working on the docs but here is something to get you started

We have included a small command-line tool that can be used to actually reclaim disk space (this can also improve the performance of very large Realms, due to improved cache locality). If you have Realm Object Server installed via NPM, you can find the new tool under ./node_modules/realm-sync-server/compiled/{darwin-x64|linux-x64}/bin/realm-vacuum.

Note that vacuuming currently only works "offline", due to the way shrinking is implemented (this is another limitation we are planning to lift in the medium term). It should be robust, i.e. exit safely if another process is accessing the input Realm file, but of course we must advise that you back up your server files before running realm-vacuum. Consult realm-vacuum --help for a list of options.

astigsen commented 6 years ago

Closing this for now as the question was answered. Please reopen if it was insufficient or the problem resurfaces.