mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-12-22 17:13:03 +00:00
New Post
This commit is contained in:
parent
64f62ca60f
commit
a0953430ce
1 changed files with 42 additions and 0 deletions
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
title: "Limiting MongoDB Resource Usage within Docker Compose"
|
||||
date: 2023-09-19T16:08:41-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
math: false
|
||||
medium_enabled: false
|
||||
---
|
||||
|
||||
One of my web services utilizes MongoDB as the database backend. It lives on one of the smaller sized virtual private servers with only 1GB of RAM and 1 CPU. Every so often I encounter a scenario where MongoDB is taking all of the sytem resources, so I started looking into how to limit it.
|
||||
|
||||
First, we can set some limits to container in general within docker-compose.
|
||||
|
||||
Example:
|
||||
|
||||
```yml
|
||||
mongo:
|
||||
image: docker.io/mongo:5.0
|
||||
mem_limit: 256m
|
||||
cpus: 0.25
|
||||
```
|
||||
|
||||
This says that the mongo container can only use a maximum of 256MB of memory and can only use up to 25% of one CPU.
|
||||
|
||||
To see a detailed list of possible options, check out the [docker documentation](https://docs.docker.com/config/containers/resource_constraints/).
|
||||
|
||||
Keep in mind that your memory and CPUs are not virtualized, therefore the container can see all the resources available, it just cannot request them.
|
||||
|
||||
This may lead to some problems depending on the codebase. For example, in [MongoDB](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-storage.wiredTiger.engineConfig.cacheSizeGB) the WiredTiger internal cache is by default set to 50% of the total amount of RAM minus 1GB.
|
||||
|
||||
Luckily we can change this default, by adding a flag within the docker-compose file.
|
||||
|
||||
```yml
|
||||
mongo:
|
||||
image: docker.io/mongo:5.0
|
||||
mem_limit: 256m
|
||||
cpus: 0.25
|
||||
command: --wiredTigerCacheSizeGB 0.25
|
||||
```
|
||||
|
||||
The `wiredTigerCacheSizeGB` takes values between `0.25` GB and `10000` GB.
|
||||
|
Loading…
Reference in a new issue