Python 容器timeoutErrors上docker峰值的内存使用

Python 容器timeoutErrors上docker峰值的内存使用,python,docker,memory-management,Python,Docker,Memory Management,我正在docker容器中运行一个循环python脚本。该脚本只是无限循环并通过HTTP请求从远程服务器收集数据(间隔1秒)。循环是通过12个进程完成的,每个进程大约有1000个线程,每个线程运行一个包含两个任务的异步IO循环 例如: async def getDataPeriodic(): while True: self.getData(queue) await asyncio.sleep(

我正在docker容器中运行一个循环python脚本。该脚本只是无限循环并通过HTTP请求从远程服务器收集数据(间隔1秒)。循环是通过12个进程完成的,每个进程大约有1000个线程,每个线程运行一个包含两个任务的异步IO循环 例如:

        async def getDataPeriodic():
            while True:
                self.getData(queue)
                await asyncio.sleep(self.sleepInterval)
        DataLoop = asyncio.get_event_loop()
        self.dataTask = entriesLoop.create_task(getEntriesPeriodic())
然后使用
run\u forever

我最近发现,我的容器总是在重新启动,问题似乎是内存问题。从日志中,我的服务器会在多个请求中收到来自远程服务器的多个“readTimeout”错误(这是常见的),这会立即将2Gb的ram分配给永远不会解除分配的容器

因此,在夜间发生多个类似错误后,我的容器将使我拥有的16GB内存饱和,然后重新启动,丢失一些有价值的内存数据(其本身永远不会超过16GB)

我想知道这是什么原因,以及如何释放错误内存,它是否与打印到stderr的数据有关?我尝试使用sysctl-wvm.drop\u caches=1清除缓存,但没有使用

我没有任何代码表明我肯定会重现这个问题,因为它发生在启动4小时后,当时我的远程服务器开始为我的请求返回超时,这就是我在这里询问的原因。有人有类似的问题吗

编辑:

这是我的dockerFile:

FROM python
ARG HOME_DIR_PATH
ARG WS_SERVER_PORT
RUN mkdir -p /home/app
WORKDIR /home/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN ls
EXPOSE ${WS_SERVER_PORT}
CMD ["python", "main.py"]