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