개발하자
파이썬 스크립트가 있는 Kubernetes Pod가 메모리를 너무 많이 사용함
Cuire
2022. 11. 25. 16:57
반응형
파이썬 스크립트가 있는 Kubernetes Pod가 메모리를 너무 많이 사용함
나는 내 데이터베이스를 덤프하고 gzip을 해서 클라우드 저장소로 옮기기 위해 파이썬 스크립트를 작성했다.
로컬에서는 모든 것이 원활하게 작동하며 기본적으로 메모리를 사용하지 않습니다(최대 20MB RAM, CPU가 상당히 높음, I/O가 최대임).
내 쿠버네티스 클러스터에서 작업으로 실행하면 메모리 사용량이 약 1.6GB까지 쌓인다.
그것은 내 gziped 덤프 파일 크기에 가깝다.
제 덤핑 논리는 이렇습니다.
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()
나는 노력했다:
- 설정, 효과 없음.
- 나는 노력했지만 그것은 훨씬 더 나빴다.
- 나는 먼저 덤프를 파일로 만들고 그 후에 gzip을 해봤는데, 내 모든 실험 중 최악이었다.
다른 생각은 없나요?
당신은 에 의해 쓰여진 것을 사용할 수 있습니다. 버퍼 제한에 대해서는 구조가 다음과 같이 되어야 합니다. 더 자세한 사용을 위해서는 문서 내부를 살펴보십시오.
또한 원격 mysql 덤프를 수행하고 .gz 파일을 풀어서 번거로움을 줄일 수 있습니다.
설정을 재현했는데 덤프는 여전히 제한적으로 작동합니다.
my-job.yml에 리소스 캡을 설정했는데 더 이상 메모리를 많이 사용하지 않습니다.
resources:
limits:
memory: "100Mi"
requests:
memory: "50Mi"
반응형