Recently, we decided to investigate why our application ARANGOSYNC for synchronizing two ArangoDB clusters across data centers used up a lot of memory – around 2GB in certain cases. The environment contained ~1500 shards with 5000 GOroutines. Thanks to tools like pprof (to profile CPU and memory usage) it was very easy to identify the issue. The GO profiler showed us that memory was allocated in the function time.After()
and it accumulated up to nearly 1GB. The memory was not released so it was clear that we had a memory leak. We will explain how memory leaks can occur using the time.After()
function through three examples.
- Products
- Solutions
- Performance
- Enterprise
- Scale Safe & Secure
- Graphs at ScaleOptimal performance for distributed graphs
- Documents at ScaleFast join operations against distributed data
- Search at ScaleSearch terabytes of data
- High availabilityBusiness Continuity and Disaster Recovery
- ComplianceGDPR & CCPA with data masking, auditing
- SecurityEncryption 360, LDAP, Auditing and more
- SubscriptionsLicense information and support plans
- Scale Safe & Secure
- Learn
- Become a multi-model
- Training CenterTutorials on features and database functionalities
- DocumentationManual, AQL, HTTP API, Drivers, Oasis
- CommunityGet involved with the open-source community
- CertificationArangoDB Certified Professional Exam
- ResourcesCourses, white papers, webinars
- BlogLatest news from ArangoDB
- EventsWhere to meet the ArangoDB team
- Become a multi-model
- Cloud
- Download