IHTSDO / snomed-query-service

An implementation of the SNOMED CT Expression Constraint Language.
Other
26 stars 9 forks source link

GC overhead limit exceeded errors when loading July 2018 international release refset #7

Closed nicholasudell closed 5 years ago

nicholasudell commented 5 years ago

The loadRelease operation is failing with the following error:

2018-10-11 09:04:58.225 ERROR 9232 --- [-ClientPoller-1] org.apache.tomcat.util.net.NioEndpoint   : 

java.lang.OutOfMemoryError: GC overhead limit exceeded

When run with the following command:

java -jar snomed-query-service.jar -Xmx7000m --loadRelease="SnomedCT_InternationalRF2_PRODUCTION_20180731T120000Z"

During this time, java process memory usage doesn't exceed 2.5GB, and the machine this is running on has 7.5GB of RAM available.

I've attached stderr + stdout logs generated with the --debug option here: https://gist.github.com/Udellgames/f73a54cb5d22175cb6451e17ccf702eb

OS: Windows 10

image

Using Snomed Query Service v1.2.0

java -version

java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
kaicode commented 5 years ago

Hi @Udellgames, thanks for getting in touch.

I can recommend using the Xms and Xmx flags to ensure that this short lived java process can grab enough memory. The Xmx flag limits the amount of memory that the JVM can take but only the Xms flag ensures that it's getting enough memory.

I just ran the import using 1g of ram in about 40 seconds using -Xms1g -Xmx1g flags. Full log here

I hope that helps!

P.S. This tool is fine for simple retrieval of concepts but there is a more fully functioned ECL implementation available in the Snowstorm project which we are now recommending for read-only SNOMED CT access. Just something to consider.

Kind regards, Kai