Kubernetes吊舱,python脚本占用太多内存
我编写了一个python脚本来转储我的数据库,gzip并将其移动到云存储 在本地,一切工作都很顺利,基本上不消耗内存(最大20MB RAM,CPU相当高,I/O最大) 当我在kubernetes集群中将其作为作业运行时,内存使用量累积到大约1.6GB。 这差不多就是我的gzip转储文件的大小 以下是我的转储逻辑:Kubernetes吊舱,python脚本占用太多内存,python,mysql,memory,kubernetes,Python,Mysql,Memory,Kubernetes,我编写了一个python脚本来转储我的数据库,gzip并将其移动到云存储 在本地,一切工作都很顺利,基本上不消耗内存(最大20MB RAM,CPU相当高,I/O最大) 当我在kubernetes集群中将其作为作业运行时,内存使用量累积到大约1.6GB。 这差不多就是我的gzip转储文件的大小 以下是我的转储逻辑: mysqldump_command = ['mysqldump', f'--host={host}', f'--port={port}', f'--user={username}',
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()
我试过:
- 设置
,无效李>PYTHONUNBUFFERED=1
- 我试过了,但更糟
- 我首先尝试将转储创建为文件,然后将其gzip,这是我所有实验中最糟糕的一次
subprocess.popen(args,bufsize=-1)
有关更详细的用法,请查看文档内部
此外,您还可以进行远程mysql转储,只需拉取.gz文件即可省去麻烦。我复制了您的设置,转储仍具有更严格的限制 我只是在my-job.yml中设置了ressource上限,它不再消耗太多内存:
resources:
limits:
memory: "100Mi"
requests:
memory: "50Mi"