1

cron在 Linux 机器上有一个 Python 2.7 进程(由 开始),需要长时间(10分钟)才能终止。在运行时,它使用大量内存 (25GB),并且似乎需要很长时间才能释放它。

strace报道源源不断

munmap(0x7fd5cd411000, 262144)          = 0
munmap(0x7fd5cb5d1000, 262144)          = 0
munmap(0x7fd5cb591000, 262144)          = 0
munmap(0x7fd5cb611000, 262144)          = 0
munmap(0x7fd5cb551000, 262144)          = 0
munmap(0x7fd5ccb11000, 262144)          = 0
munmap(0x7fd5cc991000, 262144)          = 0
munmap(0x7fd5cc951000, 262144)          = 0
munmap(0x7fd5cc591000, 262144)          = 0
munmap(0x7fd5ccb91000, 262144)          = 0
munmap(0x7fd5ccb51000, 262144)          = 0
munmap(0x7fd5cc291000, 262144)          = 0
munmap(0x7fd5cc251000, 262144)          = 0
munmap(0x7fd5cc211000, 262144)          = 0
munmap(0x7fd5cc1d1000, 262144)          = 0
munmap(0x7fd5cda11000, 262144)          = 0
munmap(0x7fd5cd111000, 262144)          = 0
munmap(0x7fd5cd0d1000, 262144)          = 0
munmap(0x7fd5cc4d1000, 262144)          = 0
munmap(0x7fd5cc411000, 262144)          = 0
munmap(0x7fd5cc151000, 262144)          = 0
munmap(0x7fd5cc091000, 262144)          = 0
munmap(0x7fd5cb911000, 262144)          = 0
munmap(0x7fd5cb8d1000, 262144)          = 0
munmap(0x7fd5cb891000, 262144)          = 0
munmap(0x7fd5cb451000, 262144)          = 0
munmap(0x7fd5cb391000, 262144)          = 0
munmap(0x7fd5cb3d1000, 262144)          = 0
munmap(0x7fd5cb351000, 262144)          = 0
munmap(0x7fd5cd5d1000, 262144)          = 0

ltrace什么都不报告。

虽然它还活着,但它使用了 GDBM 数据库,但很久以前就关闭了。打开的文件描述符是:

0 lr-x------ 1 sds sds 64 May 24 20:05 0 -> pipe:[36989242]
0 l-wx------ 1 sds sds 64 May 24 20:05 1 -> pipe:[36989243]
0 l-wx------ 1 sds sds 64 May 24 20:05 2 -> pipe:[36989243]
0 l-wx------ 1 sds sds 64 May 24 20:05 3 -> /home/sds/my/path/file.log
0 lr-x------ 1 sds sds 64 May 24 20:05 9 -> /dev/urandom

它不会向日志文件写入任何内容。

这里发生了什么?那是Python GC的产物吗?GDBM?

我能做些什么(除了kill)?

4

0 回答 0