Nexus 2.4-2.5 search and timeline indexes can leak address space

Diagnosis and Symptoms

There is a known issue with Nexus 2.4-2.5 and the indexes used by the search and timeline plugins on Linux. Nexus 2.6+ is not affected.

We upgraded the underlying indexing technology (Lucene) to a version which uses a memory mapped implementation by default. This can cause a leak of address space to the JVM on Linux, leading to OutOfMemory exceptions and instability. The memory mapped files will continue to use address space even after Lucene has released them.

You can check for this by running "top" and observing the VIRT address space being used. If it is very large it can imply this problem is happening.

Large Nexus instances (10s of GB indexed storage) are vulnerable. Instances with unusually high ERROR and WARN log lines are also at risk as this will grow the timeline index quickly.

Resolution

You can switch to a NIO implementation by adding the following line to <nexus_root>/conf/nexus.properties and restarting the server:

lucene.fsdirectory.type=nio

Note:In Nexus 2.4 this will only work for the search indexes, it does not work for the timeline indexes.

Upgrading to 2.6 or greater is the best option since NIO is the default implementation for both search and timeline indexes.