最近遇到的一个问题,我使用以下代码对备份文件计算MD5值:
# md5file=open("%s" % outputpath, 'rb') # md5=hashlib.md5(md5file.read()).hexdigest() # md5file.close()
导致了部分备份节点的guestagent被kill,发生了oom现象。
后来调查原因:是因为被计算的文件大小过大,上面的代码需要将文件全部读到内存中才能计算MD5。当此文件过大时,会导致内存超出配额,触发了oom。
现在已经改成老老实实的用linux命令计算MD5了:
md5cmd="md5sum "+ "%s" % outputpath status, output = commands.getstatusoutput(md5cmd) md5 = output.split()[0]