[
https://issues.apache.org/jira/browse/TINKERPOP-2454?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephen Mallette closed TINKERPOP-2454.
---------------------------------------
Resolution: Duplicate
> OOM error when running gremlin queries asynchronously with JAVA
> ---------------------------------------------------------------
>
> Key: TINKERPOP-2454
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2454
> Project: TinkerPop
> Issue Type: Bug
> Components: driver
> Affects Versions: 3.4.6, 3.4.8
> Reporter: Vikas Yadav
> Priority: Blocker
> Attachments: jc8rc.png, jc8rc.png, wUqam.png, wUqam.png
>
>
> We have created a rest API that executes a gremlin query on the Janus graph
> and returns the result in JSON format. API works file for small result sets.
> But for large result sets, when we hit the API asynchronously, it gives the
> following error, (max heap size {{-Xmx4g}}
> {quote}java.lang.OutOfMemoryError: GC overhead limit exceeded
> {quote}
> I am using curl with {{&}} to hit API asynchronously,
> ~curl --location --request GET 'http://HOST:PORT/graph/search?gremlin=query &~
> ~curl --location --request GET 'http://HOST:PORT/graph/search?gremlin=query
> &~
> ~curl --location --request GET 'http://HOST:PORT/graph/search?gremlin=query
> &~
> ~curl --location --request GET 'http://HOST:PORT/graph/search?gremlin=query
> &~
> Code to connect to janus graph,
> ~cluster = Cluster.open(config);~
> ~connect = cluster.connect();~
> ~submit = connect.submit(gremlin);~
> ~Iterator<Result> resultIterator = submit.iterator();~
> ~int count=0;~
> ~while (resultIterator.hasNext()){~
> ~//add to list, commented to check OOM error~
> ~}~
>
> Configurations,
> ~config.setProperty("connectionPool.maxContentLength", "50000000");~
> ~config.setProperty("connectionPool.maxInProcessPerConnection", "30");~
> ~config.setProperty("connectionPool.maxInProcessPerConnection", "30");~
> ~config.setProperty("connectionPool.maxSize", "30");~
> ~config.setProperty("connectionPool.minSize", "1");~
> ~config.setProperty("connectionPool.resultIterationBatchSize", "200");~
>
> Gremlin driver,
> ~org.apache.tinkerpop.gremlin-driver:3.4.6~
>
> Query returns around *17K records with 80MB size.*
> *How to handle a large resultset like a cursor so that not all the data is
> loaded in the memory?*
> Is there any configuration that I am missing?
> From profiling, it is clear that the gremlin driver is causing the issue but
> I am not sure how to fix it and release the memory.
> Please let me know if you need more details.
>
> Thanks.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)