I made three new custom FlagEncoder and test them with small pbf and now I’am preparing to launch the graph generation on a production machine.
But each time the generation of the first profile is done, the container crashes due to an ExecutionException!
I already changed all the “threads” values to 1 but I continue to have the crash.
europe-latest.osm.pbf => 22.5 GB
I commented ‘Delete all profiles but car’ in the Dockerfile because it don’t let me create multiple profiles
docker-compose.yml
version: '2.4' services: ors-app: container_name: ors-app ports: - 8080:8080 - 9001:9001 build: context: ../ args: APP_CONFIG: ./openrouteservice/src/main/resources/app.config.sample OSM_FILE: ./openrouteservice/src/main/files/europe-latest.osm.pbf volumes: - ./graphs:/ors-core/data/graphs - ./elevation_cache:/ors-core/data/elevation_cache - ./logs/ors:/var/log/ors - ./logs/tomcat:/usr/local/tomcat/logs - ./conf:/ors-conf #- ./your_osm.pbf:/ors-core/data/osm_file.pbf environment: - BUILD_GRAPHS=False # Forces the container to rebuild the graphs, e.g. when PBF is changed - "JAVA_OPTS=-Djava.awt.headless=true -server -XX:TargetSurvivorRatio=75 -XX:SurvivorRatio=64 -XX:MaxTenuringThreshold=3 -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:ParallelGCThreads=4 -Xms45g -Xmx45g" - "CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost"
Dockerfile
FROM openjdk:11-jdk
ENV MAVEN_OPTS=“-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true”
ENV MAVEN_CLI_OPTS=“–batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true”ARG APP_CONFIG=./openrouteservice/src/main/resources/app.config.sample
ARG OSM_FILE=./openrouteservice/src/main/files/europe-latest.osm.pbfWORKDIR /ors-core
COPY openrouteservice /ors-core/openrouteservice
COPY $OSM_FILE /ors-core/data/osm_file.pbf
COPY $APP_CONFIG /ors-core/openrouteservice/src/main/resources/app.config.sample#Install tomcat
RUN wget -q https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz -O /tmp/tomcat.tar.gz &&
cd /tmp &&
tar xvfz tomcat.tar.gz &&
mkdir /usr/local/tomcat /ors-conf &&
cp -R /tmp/apache-tomcat-8.5.39/* /usr/local/tomcat/ &&
# Install dependencies and locales
apt-get update -qq && apt-get install -qq -y locales nano maven moreutils jq &&
locale-gen en_US.UTF-8 &&
# Rename to app.config
cp /ors-core/openrouteservice/src/main/resources/app.config.sample /ors-core/openrouteservice/src/main/resources/app.config &&
# Replace paths in app.config to match docker setup
jq ‘.ors.services.routing.sources[0] = “data/osm_file.pbf”’ /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config &&
jq ‘.ors.services.routing.profiles.default_params.elevation_cache_path = “data/elevation_cache”’ /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config &&
jq ‘.ors.services.routing.profiles.default_params.graphs_root_path = “data/graphs”’ /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config &&
# init_threads = 1, > 1 been reported some issues
jq ‘.ors.services.routing.init_threads = 1’ /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config
# Delete all profiles but car
#jq ‘del(.ors.services.routing.profiles.active[1,2,95,3,4,5,6,7,8])’ /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.configCOPY ./docker-entrypoint.sh /docker-entrypoint.sh
#Start the container
EXPOSE 8080
ENTRYPOINT [“/bin/bash”, “/docker-entrypoint.sh”]
app.config
{ "ors":{ "info":{ "base_url":"https://openrouteservice.org/", "support_mail":"support@openrouteservice.org", "author_tag":"openrouteservice", "content_licence":"LGPL 3.0" }, "services":{ "routing":{ "enabled":true, "mode":"normal", "routing_description":"This is a routing file from openrouteservice", "routing_name":"openrouteservice routing", "sources":[ "openrouteservice/src/main/files/europe-latest.osm.pbf" ], "init_threads":1, "attribution":"openrouteservice.org, OpenStreetMap contributors", "elevation_preprocessed":false, "profiles":{ "active":[ "akpla", "akplb", "akplc" ], "default_params":{ "encoder_flags_size":8, "graphs_root_path":"graphs", "elevation_provider":"multi", "elevation_cache_path":"cgiar_provider", "elevation_cache_clear":false, "instructions":true, "maximum_distance":100000, "maximum_distance_dynamic_weights":100000, "maximum_distance_avoid_areas":100000, "maximum_waypoints":50, "maximum_snapping_radius":400, "maximum_avoid_polygon_area":200000000, "maximum_avoid_polygon_extent":20000, "maximum_distance_alternative_routes":100000, "maximum_alternative_routes":3, "maximum_distance_round_trip_routes":100000, "maximum_speed_lower_bound":80, "preparation":{ "min_network_size":200, "min_one_way_network_size":200, "methods":{ "lm":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":16 } } }, "execution":{ "methods":{ "lm":{ "disabling_allowed":true, "active_landmarks":8 } } } }, "profile-akpla":{ "profiles":"driving-akpla", "parameters":{ "encoder_flags_size":8, "encoder_options":"turn_costs=true|block_fords=false|use_acceleration=false", "maximum_distance":100000, "elevation":false, "preparation":{ "min_network_size":200, "min_one_way_network_size":200, "methods":{ "ch":{ "enabled":true, "threads":1, "weightings":"recommended" }, "lm":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":16 }, "core":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":64, "lmsets":"highways;allow_all" } } }, "execution":{ "methods":{ "ch":{ "disabling_allowed":true }, "lm":{ "disabling_allowed":true, "active_landmarks":6 }, "core":{ "disabling_allowed":true, "active_landmarks":6 } } }, "ext_storages":{ "WayCategory":{ }, "HeavyVehicle":{ "restrictions":true }, "WaySurfaceType":{ } } } }, "profile-akplb":{ "profiles":"driving-akplb", "parameters":{ "encoder_flags_size":8, "encoder_options":"turn_costs=true|block_fords=false|use_acceleration=false", "maximum_distance":100000, "elevation":false, "preparation":{ "min_network_size":200, "min_one_way_network_size":200, "methods":{ "ch":{ "enabled":true, "threads":1, "weightings":"recommended" }, "lm":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":16 }, "core":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":64, "lmsets":"highways;allow_all" } } }, "execution":{ "methods":{ "ch":{ "disabling_allowed":true }, "lm":{ "disabling_allowed":true, "active_landmarks":6 }, "core":{ "disabling_allowed":true, "active_landmarks":6 } } }, "ext_storages":{ "WayCategory":{ }, "HeavyVehicle":{ "restrictions":true }, "WaySurfaceType":{ } } } }, "profile-akplc":{ "profiles":"driving-akplc", "parameters":{ "encoder_flags_size":8, "encoder_options":"turn_costs=true|block_fords=false|use_acceleration=false", "maximum_distance":100000, "elevation":false, "preparation":{ "min_network_size":200, "min_one_way_network_size":200, "methods":{ "ch":{ "enabled":true, "threads":1, "weightings":"recommended" }, "lm":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":16 }, "core":{ "enabled":true, "threads":1, "weightings":"recommended,shortest", "landmarks":64, "lmsets":"highways;allow_all" } } }, "execution":{ "methods":{ "ch":{ "disabling_allowed":true }, "lm":{ "disabling_allowed":true, "active_landmarks":6 }, "core":{ "disabling_allowed":true, "active_landmarks":6 } } }, "ext_storages":{ "WayCategory":{ }, "HeavyVehicle":{ "restrictions":true }, "WaySurfaceType":{ } } } } } } }, "logging":{ "enabled":true, "level_file":"DEBUG_LOGGING.json", "location":"/var/log/ors", "stdout":true }, "system_message":[ { "active":false, "text":"This message would be sent with every routing bike fastest request", "condition":{ "request_service":"routing", "request_profile":"cycling-regular,cycling-mountain,cycling-road,cycling-electric", "request_preference":"fastest" } }, { "active":false, "text":"This message would be sent with every request for geojson response", "condition":{ "api_format":"geojson" } }, { "active":false, "text":"This message would be sent with every request on API v1 from January 2020 until June 2050", "condition":{ "api_version":1, "time_after":"2020-01-01T00:00:00Z", "time_before":"2050-06-01T00:00:00Z" } }, { "active":false, "text":"This message would be sent with every request" } ] } }
docker logs ors-app
14-Dec-2020 08:13:23.444 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 10425 ms 14 Dec 08:14:24 INFO [routing.RoutingProfile] - [1] FlagEncoders: 1, bits used [UNKNOWN]/64. 14 Dec 08:14:24 INFO [routing.RoutingProfile] - [1] Capacity: [UNKNOWN]. (edges - 83087201, nodes - 65342755) 14 Dec 08:14:24 INFO [routing.RoutingProfile] - [1] Total time: 61.726s. 14 Dec 08:14:24 INFO [routing.RoutingProfile] - [1] Finished at: 2020-12-14 08:14:24. 14 Dec 08:14:24 INFO [routing.RoutingProfile] - 14 Dec 08:14:24 INFO [routing.RoutingProfile] - [2] Profiles: 'driving-akplb', location: 'data/graphs/akplb'.
14 Dec 12:04:40 ERROR [routing.RoutingProfileManager] - java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.carrotsearch.hppc.BufferAllocationException: Not enough memory to allocate buffers for rehashing: 67,108,864 → 134,217,728
14 Dec 12:04:40 INFO [routing.RoutingProfile] - [3] Profiles: ‘driving-akplc’, location: ‘data/graphs/akplc’.
14 Dec 12:04:40 ERROR [routing.RoutingProfileManager] - Failed to initialize RoutingProfileManager instance.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.carrotsearch.hppc.BufferAllocationException: Not enough memory to allocate buffers for rehashing: 67,108,864 → 134,217,728
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?] at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?] at org.heigit.ors.routing.RoutingProfileManager.initialize(RoutingProfileManager.java:164) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfileManager.getInstance(RoutingProfileManager.java:59) ~[classes/:6.3.1] at org.heigit.ors.servlet.listeners.ORSInitContextListener.lambda$contextInitialized$0(ORSInitContextListener.java:40) ~[classes/:6.3.1] at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.carrotsearch.hppc.BufferAllocationException: Not enough memory to allocate buffers for rehashing: 67,108,864 → 134,217,728
at com.graphhopper.routing.lm.LMAlgoFactoryDecorator.loadOrDoWork(LMAlgoFactoryDecorator.java:303) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.GraphHopper.loadOrPrepareLM(GraphHopper.java:1388) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.GraphHopper.postProcessing(GraphHopper.java:950) ~[graphhopper-core-v0.13.8.jar:?] at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.postProcessing(ORSGraphHopper.java:608) ~[classes/:6.3.1] at com.graphhopper.GraphHopper.process(GraphHopper.java:703) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:680) ~[graphhopper-core-v0.13.8.jar:?] at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:159) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:191) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfile.<init>(RoutingProfile.java:135) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.3.1] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] ... 1 more Caused by: java.util.concurrent.ExecutionException: com.carrotsearch.hppc.BufferAllocationException: Not enough memory to allocate buffers for rehashing: 67,108,864 -> 134,217,728 at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?] at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?] at com.graphhopper.routing.lm.LMAlgoFactoryDecorator.loadOrDoWork(LMAlgoFactoryDecorator.java:299) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.GraphHopper.loadOrPrepareLM(GraphHopper.java:1388) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.GraphHopper.postProcessing(GraphHopper.java:950) ~[graphhopper-core-v0.13.8.jar:?] at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.postProcessing(ORSGraphHopper.java:608) ~[classes/:6.3.1] at com.graphhopper.GraphHopper.process(GraphHopper.java:703) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:680) ~[graphhopper-core-v0.13.8.jar:?] at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:159) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:191) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfile.<init>(RoutingProfile.java:135) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.3.1] at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.3.1] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] ... 1 more Caused by: com.carrotsearch.hppc.BufferAllocationException: Not enough memory to allocate buffers for rehashing: 67,108,864 -> 134,217,728 at com.carrotsearch.hppc.IntObjectHashMap.allocateBuffers(IntObjectHashMap.java:1111) ~[hppc-0.8.1.jar:?] at com.carrotsearch.hppc.IntObjectHashMap.allocateThenInsertThenRehash(IntObjectHashMap.java:1136) ~[hppc-0.8.1.jar:?] at com.carrotsearch.hppc.IntObjectHashMap.put(IntObjectHashMap.java:180) ~[hppc-0.8.1.jar:?] at com.graphhopper.routing.AbstractBidirAlgo.fillEdges(AbstractBidirAlgo.java:315) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.AbstractBidirAlgo.fillEdgesFrom(AbstractBidirAlgo.java:274) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.AbstractBidirAlgo.runAlgo(AbstractBidirAlgo.java:238) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LandmarkStorage$LandmarkExplorer.runAlgo(LandmarkStorage.java:814) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LandmarkStorage.createLandmarksForSubnetwork(LandmarkStorage.java:371) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LandmarkStorage.createLandmarks(LandmarkStorage.java:288) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.PrepareLandmarks.doSpecificWork(PrepareLandmarks.java:130) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.util.AbstractAlgoPreparation.doWork(AbstractAlgoPreparation.java:30) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LMAlgoFactoryDecorator$1.run(LMAlgoFactoryDecorator.java:289) ~[graphhopper-core-v0.13.8.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] ... 1 more Caused by: java.lang.OutOfMemoryError: Java heap space at com.carrotsearch.hppc.IntObjectHashMap.allocateBuffers(IntObjectHashMap.java:1102) ~[hppc-0.8.1.jar:?] at com.carrotsearch.hppc.IntObjectHashMap.allocateThenInsertThenRehash(IntObjectHashMap.java:1136) ~[hppc-0.8.1.jar:?] at com.carrotsearch.hppc.IntObjectHashMap.put(IntObjectHashMap.java:180) ~[hppc-0.8.1.jar:?] at com.graphhopper.routing.AbstractBidirAlgo.fillEdges(AbstractBidirAlgo.java:315) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.AbstractBidirAlgo.fillEdgesFrom(AbstractBidirAlgo.java:274) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.AbstractBidirAlgo.runAlgo(AbstractBidirAlgo.java:238) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LandmarkStorage$LandmarkExplorer.runAlgo(LandmarkStorage.java:814) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LandmarkStorage.createLandmarksForSubnetwork(LandmarkStorage.java:371) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LandmarkStorage.createLandmarks(LandmarkStorage.java:288) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.PrepareLandmarks.doSpecificWork(PrepareLandmarks.java:130) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.util.AbstractAlgoPreparation.doWork(AbstractAlgoPreparation.java:30) ~[graphhopper-core-v0.13.8.jar:?] at com.graphhopper.routing.lm.LMAlgoFactoryDecorator$1.run(LMAlgoFactoryDecorator.java:289) ~[graphhopper-core-v0.13.8.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] ... 1 more 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - ====> Recycling garbage... 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - Before: Total - 45 GB, Free - 3.00 GB, Max: 45 GB, Used - 42.00 GB 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - After: Total - 45 GB, Free - 7.62 GB, Max: 45 GB, Used - 37.38 GB 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - ======================================================================== 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - ====> Memory usage by profiles: 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - [1] 13.85 GB (37.1%) 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - Total: 13.85 GB (37.1%) 14 Dec 12:04:40 INFO [routing.RoutingProfileManager] - ======================================================================== Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "ajp-nio-8009-AsyncTimeout" Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "ajp-nio-8009-ClientPoller-0" Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-nio-8080-ClientPoller-0" Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "ajp-nio-8009-ClientPoller-1" Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-nio-8080-ClientPoller-1" Exception in thread "http-nio-8080-AsyncTimeout" Exception in thread "PBF Reader" java.lang.OutOfMemoryError: Java heap space Exception in thread "AsyncFileHandlerWriter-110992469" java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space 14-Dec-2020 12:10:09.553 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run Unexpected death of background thread [ContainerBackgroundProcessor[StandardEngine[Catalina]]] java.lang.OutOfMemoryError: Java heap space Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: Java heap space