Unable to lock JVM memory Failed to set working set size Error code – How to solve this Elasticsearch error

Opster Team

Aug-23, Version: 6.8-8.9

Briefly, this error occurs when Elasticsearch is unable to lock the JVM memory due to insufficient system resources or incorrect configuration. This could be due to the system not having enough memory or the user running Elasticsearch not having the necessary permissions. To resolve this issue, you can increase the system’s memory, ensure that the user running Elasticsearch has the necessary permissions, or adjust the Elasticsearch configuration to require less memory.

This guide will help you check for common problems that cause the log ” Unable to lock JVM memory. Failed to set working set size. Error code {} ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: memory, bootstrap.

Log Context

Log “Unable to lock JVM memory. Failed to set working set size. Error code {}” classname is JNANatives.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

            // By default; Windows limits the number of pages that can be locked.
            // Thus; we need to first increase the working set size of the JVM by
            // the amount of memory we wish to lock; plus a small overhead (1MB).
            SizeT size = new SizeT(JvmInfo.jvmInfo().getMem().getHeapInit().getBytes() + (1024 * 1024));
            if (kernel.SetProcessWorkingSetSize(process; size; size) == false) {
                logger.warn("Unable to lock JVM memory. Failed to set working set size. Error code {}"; Native.getLastError());
            } else {
                JNAKernel32Library.MemoryBasicInformation memInfo = new JNAKernel32Library.MemoryBasicInformation();
                long address = 0;
                while (kernel.VirtualQueryEx(process; new Pointer(address); memInfo; memInfo.size()) != 0) {
                    boolean lockable = memInfo.State.longValue() == JNAKernel32Library.MEM_COMMIT

 

How helpful was this guide?

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?