I have a pretty fast server will lots of primary memory at home and is running the docker containers for openrouteservice and openpoiservice. Right now I am doing it for Europe and it takes a long time. The openpoiservice has been running for 2 days and it still not done. And the openrouteservice crashed because of java.lang.OutOfMemoryError: Java heap space, even though I have set the memory to -Xms10g -Xmx20g. Should I make it bigger? Or not run both at the same time? But then it would take a at least a week to get back in business!!
One additional question in my mind is:
Whenever the the server is restarted or crashes for some reason it seem like I have to rerun the containers again. And that takes days!! Is that correct? Where is the data stored? Is it all in the postgres database for openpoiservice? Where is it stored for the openrouteservice?
Should I move the database to another server to be it more fault tolerant?
Thanks for any advice
first, note that running on the latest version of openrouteservice will speed up builds by quite a bit. Make sure to update or pull the latest docker image
Second, if you’re running the whole of europe with all 9 profiles, then this will take more than 20 GB of RAM (we recommend twice the amount of RAM as the file size) and probably a build time of around two days, maybe more.
Build time for the openpoiservice is quite a bit longer, so this is to be expected.
We run the openpoiservice build on a by-country basis, running it for the whole of Europe could easily take a week…
The main question here is whether you actually need all profiles, and whether you can sacrifice request speed for build speed - if you can, then turning off some preparations might speed up the build significantly.
Yes, if you want to restart the server you have to rerun the containers.
The ors data is stored in a custom format in the
Make sure that they are persisted to disk via docker volumes as is done in the
If this happens, reloading shouldn’t take more than a few minutes.
For the openpoiservice, everything is stored in the postgres database so persisting that in any way should work.