I am running TomEE (kind of Tomcat) server on Java 8 and using Titan 1.0.0 with Cassandra backend and Elasticsearch index as my database. In my development environment with small user connection everything works perfect but on my production server with many user connected with many db access we have an issue with memory leaks probably because Titan graph cache or something Titan relative. I have configure 4GB heap-size and after more than 10 hours of run allocated memory on heap grows to its maximum (~300Mb per hour) and it causes that GC (Garbage Collector) can't clean up anymore and remains to run continuously that causes server instance to be unresponsive.
Using VisualVM i did some memory profiling and those are my screenshots:

Any suggest how we can fix this or find the way to investigate this issue in more details? May be some GC params can help us in this case?
Titan 1.0.0 graph cache memory leaks
433 views Asked by OctopusSD At
1
There are 1 answers
Related Questions in MEMORY-LEAKS
- Would event listeners prevent garbage collecting objects referenced in outer function scopes?
- Top output says my app uses 33 gigs of memory but how?
- My React Nextjs web app is using up 100% of my ram and crashing when i try to do changes. Does anyone know how to fix this or what may be the cause?
- Trigger Warning: Mysterious Memory Spike on Google Drive Upload using Google Cloud Run
- Do I need to clear the cache manually when using PredicateSpec.readBody in order to avoid memory leaks?
- Interpreting Chrome memory tool's results for a memory leak?
- Why does setting flags on an NDArray view result in allocations? Are they guaranteed to be bounded?
- How to dispose delegate in blazor or c#
- Comment optimiser l'utilisation des resources mémoires (RAM) sur flutter?
- Chained calls may cause memory leaks?
- Unable to fix generator memory leak despite knowing where it's coming from
- Jest is taking a lot of heap memory with (strings)
- Cause of this SwiftData memory leak?
- AES-CTR PRNG Implementation in OpenSSL with Consistent Output and Memory Leak Issues
- Getting an error when triying to read a file: zsh: trace trap
Related Questions in GARBAGE-COLLECTION
- Java SoftReference: Soft references were not collected before the occurrence of OOM
- Would event listeners prevent garbage collecting objects referenced in outer function scopes?
- How to prevent R from slowing down in long analysis besides freeing up memory?
- change GC in quarkus jib build docker container
- What is 'MarkDependentCodeForDeoptimization()' used for in V8's Mark-Compact phase?
- Is my closure in an expressjs middlware causing a memory leak?
- Why do different delivery methods have different results when applying PHP's global keyword?
- Comment optimiser l'utilisation des resources mémoires (RAM) sur flutter?
- The way Elasticsearch deals with control heap memory when indexing documents
- Is it possible for a .net core app run 2 different GC modes at the same time?
- Why do we need the finalizer in the disposable pattern if it is not guaranteed that it will be called by the garbage collector?
- Out of memory in clojure - Nested reduce on Lazy Sequence
- Why does process memory grow in .Net, but managed heap size does not change?
- What is wrong with this Reflection.Emit for value conversion delegates?
- Python, How to stop tkinter variables from being garbage-collected?
Related Questions in JAVA-8
- Java control panel glitching or becomes yellowish
- Uneven Load Distribution in Kubernetes Pods with Multithreaded Execution using fork join pool
- test result: Error. Program `sh' timed out (timeout set to 480000ms, elapsed time including timeout handling was 480002ms)
- java.net.ConnectException: Connection timed out: no further information Java to SOAP
- Java Stream, Need to update list of list objects
- Setting up different Java class fields value by a single value on some counter value
- feign client Spring boot
- `TYPE_USE` vs `TYPE` vs `TYPE_PARAMETER` annotations
- Error faced in trying to install Java 8 on Raspberry Pi 4B
- Grouping by multiple fields and counting using in Java 8
- How to customize mention notifications in liferay 7.3.5
- Without _JAVA_OPTIONS and JAVA_TOOL_OPTIONS, whether LeanFT will work or not?
- How to build a CriteriaQuery from SQL query
- From a string I am manually setting the date and time in calendar, for the other days it is working fine but for 28 and 29 Feb it is setting wrong val
- Sort strings containing numbers, chars and ponctuations in ”human readable order”
Related Questions in TITAN
- Cannot update edgeTTL in JanusGraph
- Getting Error while installing the titan.Core in Cygwin
- Cannot create directory while installing titan.core in cygwin by the command make install
- Error while installing titan.core in cygwin
- Getting Error while installing titan.core
- make: *** No rule to make target '-', needed by 'TTCN3_DIR'. Stop
- Why is the Bluetooth security key for FIDO gone?
- How to Execute TTCN-3 test case from JAVA
- No signature of method: org.janusgraph.graphdb.database.management.JanusGraphIndexWrapper.buildCompositeIndex()
- Any graphical interface of JanusGraph Gremlin Query
- Graph with 100+ edges per vertex
- JanusGraph query failure due to Cassandra backend tombstone exception
- How to add an entry in vertex with datatype of value Set in gremlin
- gremlin console on Rexster (http://localhost:8182/doghouse/main/gremlin/graph) not working
- Titan Graph data migration
Related Questions in APACHE-TOMEE
- URL's generated with TomEE are not working
- TomEE 10.0.27. No errors in stacktrace, but application cannot be reached
- TomEE 9.0.37 the bean encountered a non-application exception; Nested exception is: org.apache.openejb.OpenEJBRuntimeException
- openjpa not creating schema from persistence.xml
- Migrating TomEE 7.1.2 to 9.1.2 throws javax.naming.NameNotFoundException: Name "nullDatabasePropertiesServiceImplLocal" not found
- Update TomEE 9.1.0 to 9.1.1/9.1.2 for JakartaEE 9.1 application results in UnsatisfiedResolutionException for specific inject
- Performance Degradation and Connection Pooling Issues during Migration from GlassFish to TomEE with Oracle Database
- TomEE - How does ClassLoader load from 3 webapps
- deployment path in Tom EE plume
- Where can I find a list of TomEE 9.x / tomcat 10.0 provided jars?
- Deploying WAR with multi-version jar fails
- Jakarta Mail works as standalone but not in Web Applicaton - where it throws Authentication exception
- SEVERE: ConnectionStrategyFailed with Apache TomEE
- Tomee MultipartProvider didn't consider body as readable
- Module path problem when looking for a remote EJB in JNDI
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I have seen those problems before on Titan 1.0 with Cassandra. Two things to check:
Opening And Closing The Graph
Are you opening different transaction to the graph per user or different graphs per user? i.e. are you doing:
(1)
or
(2)
Approach (1) means that each user gets their own connection to the graph with their own graph object. This is very heavy and leads to more memory usage.
Approach (2) means that every user uses the same connection but different transactions. This is preferable in my opinion. Note: This is assuming users are on different threads.
Long lived Transactions
This is the problem I had which resulted in similar GC problems to yourself. I simply kept transactions alive for too long. To speed up querying Titan caches a lot and I don't think it clears the cache unless the transaction is closed. So ideally you should have something like:
where each transaction is closed after a user is done with it.