Mongodb会在一段时间后填充服务器内存



我使用flask编写了Python程序,它从MongoDB中读取一些数据。但在服务器上运行程序几个小时后,它开始通过MongoDB填充服务器内存,直到所有服务器内存都用完为止。

运行程序时服务器资源的状态

几个小时后,服务器资源的状态如下

几个小时后的服务器资源状态

我使用过的技术

  1. docker上的MongoDB
  2. python 3.8
  3. 烧瓶2.0.2
  4. pymongo 4.0.1
  5. gunicorn 20.1.0

Docker文件

FROM python:3.8.7-buster
WORKDIR /flask_app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
ENV FLASK_APP=server.py
CMD ["gunicorn", "server:app", "-w", "2","--log-level" ,"DEBUG", "--threads", "2", "-b", "0.0.0.0:5000"]

事实上,这个问题是由于MongoDB缓存系统造成的。

为了解决这个问题,您必须限制MongoDB的RAM消耗量。

这不会降低MongoDB的性能,也不会对其产生太大影响,但它确实解决了问题。

您需要将这些配置添加到docker园区配置中:

.......
deploy:
resources:
limits:
memory: 3G
reservations:
memory: 1G
command: --wiredTigerCacheSizeGB 0.25

.......

在这种情况下,MongoDB内存的消耗被固定在5.2,您可以调整您的消耗。

祝你好运:(

相关内容

  • 没有找到相关文章

最新更新