Hi all, I’m trying to get a Germany-wide GH instance with GTFS running on my 32 GB RAM server, but it seems like it inevitably crashes either during import or after a few hours of stable use no matter which settings I use. I feel like this shouldn’t be the case, since the entire graph-cache folder is < 20 GB.
Here’s my setup:
- GH 11.0 running in a docker container (eclipse-temurin:21-jre) with no RAM restrictions
- Ubuntu 24.04, 32 GB RAM, 8 GB of extra memory swap space
- Separate build and serve runs, with the following Java Options:
JAVA_OPTS_SERVE="-Xms24g -Xmx24g -XX:+UseZGC -XX:MaxMetaspaceSize=512m -XX:+ExitOnOutOfMemoryError" # RAM heap around graph cache size on serve, ZGC based on GH docs
JAVA_OPTS_BUILD="-Xms24g -Xmx24g -XX:+UseParallelGC -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=512m -XX:+ExitOnOutOfMemoryError" # parallel GC based on GH docs
- MMAP already enabled in config
- GTFS feed from https://gtfs.de/de/feeds/
- Custom profiles only for reduced speed limits inside of cities
- The rest of the server is relatively light on RAM, some docker containers and the system together totalling maybe 2-4 GB
Here’s what is happening: The first import often crashes with a java.lang.OutOfMemoryError during the GTFS feed import, but with some tuning of the Java heap I made it work at least once. However, during serving, I keep getting SIGSEGV errors, either during startup of the container, or after a few hours of normal stable use:
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000742e77916b17, pid=1, tid=11
On a 64 GB test server, everything ran fine for weeks with around 50 GB of Java heap allocated. Still, is this expected behaviour? It seems like it should be possible to serve a single country on 32 GB.
Any help is appreciated, thanks!