Skip to main content
Redhat Developers  Logo
  • AI

    Get started with AI

    • Red Hat AI
      Accelerate the development and deployment of enterprise AI solutions.
    • AI learning hub
      Explore learning materials and tools, organized by task.
    • AI interactive demos
      Click through scenarios with Red Hat AI, including training LLMs and more.
    • AI/ML learning paths
      Expand your OpenShift AI knowledge using these learning resources.
    • AI quickstarts
      Focused AI use cases designed for fast deployment on Red Hat AI platforms.
    • No-cost AI training
      Foundational Red Hat AI training.

    Featured resources

    • OpenShift AI learning
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

    Red Hat AI Factory with NVIDIA

    • Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.
    • Explore the solution
  • Learn

    Self-guided

    • Documentation
      Find answers, get step-by-step guidance, and learn how to use Red Hat products.
    • Learning paths
      Explore curated walkthroughs for common development tasks.
    • Guided learning
      Receive custom learning paths powered by our AI assistant.
    • See all learning

    Hands-on

    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.
    • Interactive labs
      Learn by doing in these hands-on, browser-based experiences.
    • Interactive demos
      Click through product features in these guided tours.

    Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics

    Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
  • Build

    Get started

    • Red Hat build of Podman Desktop
      A downloadable, local development hub to experiment with our products and builds.
    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.

    Download products

    • Access product downloads to start building and testing right away.
    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset

    References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
  • Community

    Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions

    Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github

    Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

    Join the Red Hat Developer program

    • Download Red Hat products and project builds, access support documentation, learning content, and more.
    • Explore the benefits

Configuring the MongoDB WiredTiger memory cache for RHMAP

September 17, 2018
Camila Macedo
Related topics:
Kubernetes
Related products:
Red Hat build of Node.jsRed Hat OpenShift Container Platform

    This article describes how to configure MongoDB's WiredTiger memory cache in Red Hat Mobile Application Platform (RHMAP) to prevent high-usage memory issues and Nagios alerts. If the WiredTiger cache consumes all the memory available for a container, memory issues and Nagios alerts will occur.

    The WiredTiger storage engine is the default storage engine starting in MongoDB version 3.2. It uses MultiVersion Concurrency Control (MVCC) architecture for write operations in order to allow multiple different modifications to the same document at the same time.

    WiredTiger also caches data and creates checkpoints to give you the ability to recover anytime it’s necessary. For example, if a MongoDB image deployed in a container fails, it is useful to recover the data that was not persisted. Additionally, WiredTiger can recover un-checkpointed data with its journal files. See the journal documentation and snapshots and checkpoint documentation for more information.

    Configuring memory usage

    To prevent memory issues and Nagios alerts, the property storage.wiredTiger.engineConfig.cacheSizeGB should be set to a value less than the amount of RAM available in the container. Another option to achieve the same result is through the –wiredTigerCacheSizeGB parameter.

    In version 3.2 of MongoDB, the default configuration is to use 1GB of memory or 60% of the available amount of memory when the available amount is larger than one 1GB. This usage percentage was replaced by 50% in version 3.4 of MongoDB. For more details, see the storage.wiredTiger.engineConfig.cacheSizeGB API documentation.

    Due to a bug in MongoDB 3.2, a workaround is required to accept values lower than 1Gi. The property configString: cache_size=<cache-size> needs to be set in the MongoDB configuration. The following is an example of setting the property to 600MB:

    # storage options - How and where to store data
    storage:
        # Directory for datafiles (defaults to /data/db/)
        dbPath: ${MONGODB_DATADIR}
        wiredTiger:
           engineConfig:
               configString: cache_size=600M

    Note: The bug "WiredTiger cache size is only configurable in whole gigabytes" can be viewed here.

    Avoiding high-usage memory alerts and issues related to MongoDB in RHMAP

    In version 4.6.5 or above of RHMAP, the WiredTiger memory cache will be already configured to use 60%/600MB of the default amount of available memory, which is 1GB in the newer RHMAP MongoDB image released. To check this image, see its catalog here. However, in the previous image, memory issues and high-usage memory alerts may be triggered in Nagios because the cache size configuration was not set.

    It is recommended that the latest version of the product be used in order to achieve the best user experience and avoid technical debts. If this is not possible, then it is recommended to update all MongoDB instances' configuration to include a proper value for the WiredTiger cache size in both projects: Core and MBaaS.

    The following the steps are examples suggested by Shannon Poole, an RHMAP senior software engineer, to perform this configuration manually.

    1. Create a ConfigMap, as shown in the following example:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: wired-tiger-config
      namespace: rhmap-3-node-mbaas
    data:
      mongod.conf: |
        ##
        ## For list of options visit:
        ## https://docs.mongodb.org/manual/reference/configuration-options/
        ##
    
        # systemLog options - How to do logging
        systemLog:
          # Runs the mongod in a quiet mode that attempts to limit the 
          # amount of output
          quiet: true
    
    
        # net options - Network interfaces settings
        net:
          # Specify port number (27017 by default)
          port: 27017
    
    
        # storage options - How and where to store data
        storage:
          # Directory for datafiles (defaults to /data/db/)
          dbPath: /var/lib/mongodb/data
          wiredTiger:
            engineConfig:
              configString: cache_size=400M
    
        # replication options - Configures replication
        replication:
          # Specifies a maximum size in megabytes for the replication 
          # operation log (i.e. the oplog,
          # 5% of disk space by default)
          oplogSizeMB: 64
    

    2. Add the ConfigMap to the deployment configuration (dc) of the MongoDB pod in order to mount it in the right place (/etc/mongod.conf). To edit the deployment configuration, use the following command or the Red hat OpenShift console.

    $ oc edit dc/<deployment_config>

    Note: See the Consuming in Volumes section of the Red Hat OpenShift documentation for further information.

    3. Update the MongoDB replica set container specification, as shown in the following example:

    containers:
    - volumeMounts:
      - name: wired-tiger-config
        mountPath: /etc/mongod.conf
        subPath: mongod.conf
    volumes:
    - name: wired-tiger-config
      configMap:
        name: wired-tiger-config

    4. Check the pod logs to verify the changes. See if the custom cache size will be there after MongoDB is redeployed. This customization will be described in the logs when MongoDB initializes, as shown in the following example:

    => [Mon Aug 20 13:42:22] wiredTiger cacheSizeGB set to 1
    => [Mon Aug 20 13:42:22] Waiting for local MongoDB to accept connections  …
    2018-08-20T13:42:22.837+0000 I STORAGE  [main] Engine custom option: cache_size=600M

    Conclusion

    If the memory amount allocated for the MongoDB instances will be changed, then it is recommended that you review the configuration and set an adequate value for the WiredTiger cache. There's no need to perform this configuration when the memory resource is bigger than 1GB, since the default set up is 60% of the total available in this situation. However, if a change is done in order to allocate 1GB or less, the recommendation is to customize this value, as explained in this post.

    Last updated: October 31, 2023

    Recent Posts

    • Every layer counts: Defense in depth for AI agents with Red Hat AI

    • Fun in the RUN instruction: Why container builds with distroless images can surprise you

    • Trusted software factory: Building trust in the agentic AI era

    • Build a zero trust AI pipeline with OpenShift and RHEL CVMs

    • Red Hat Hardened Images: Top 5 benefits for software developers

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2026 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Chat Support

    Please log in with your Red Hat account to access chat support.