首页 > 解决方案 > 带有 python 脚本的 Kubernetes Pod 消耗了太多内存

问题描述

我编写了一个 python 脚本来转储我的数据库,对其进行 gzip 压缩并将其移动到云存储中。

本地一切工作顺利,基本上不消耗内存(最大 20MB RAM,CPU 相当高,I/O 最大)。

当我在我的 kubernetes 集群中将其作为作业运行时,内存使用量堆积到大约 1.6 GB。

这或多或少是我压缩后的转储文件的大小。

这是我的倾销逻辑:

mysqldump_command = ['mysqldump', f'--host={host}', f'--port={port}', f'--user={username}',
                         f'--password={password}', '--databases', '--compact',
                         '--routines', db_name, f'--log-error={self.errorfile}']

print(f'## Creating mysql dump')        
with open(self.filename_gzip, 'wb', 0) as f:
    p1 = subprocess.Popen(mysqldump_command, stdout=subprocess.PIPE)
    p2 = subprocess.Popen('gzip', stdin=p1.stdout, stdout=f)
p1.stdout.close()  # force write error (/SIGPIPE) if p2 dies
p2.wait()
p1.wait()

我试过了:

还有什么想法吗?

谢谢!

标签: pythonmysqlmemorykubernetes

解决方案


我复制了您的设置,并且转储仍然可以在更严格的限制下工作。

我只是在 my-job.yml 中设置了资源上限,它不再消耗太多内存:

resources:
  limits:
    memory: "100Mi"
  requests:
    memory: "50Mi"

推荐阅读