为什么我的 Python 脚本会随机被终止?

18 投票
5 回答
22460 浏览
提问于 2025-04-15 16:28

基本上,我有一个包含30,000个网址的列表。这个脚本会逐个访问这些网址,并下载它们(每次之间有3秒的间隔)。然后,它会把下载的网页内容存储到一个数据库里。

这个过程会不断循环...

但是为什么有时候会突然显示“被杀死”呢?我什么都没动。

补充:这个问题发生在我三台Linux机器上。这些机器是在Rackspace云上,内存是256MB。没有其他程序在运行。

5 个回答

1

有没有可能是遇到了一个没有被处理的错误?你是在命令行里运行这个程序,还是通过定时任务(cron)或者其他自动化的方式在运行?如果是自动化的方式,输出结果可能不会显示在任何地方。

17

遇到这种情况,你应该查看日志文件。

我用的是Debian和Ubuntu,所以对我来说,主要的日志文件是:/var/log/syslog

如果你用的是Red Hat,我想那个日志文件是:/var/log/messages

如果发生了像内核强制结束你的进程这样特别的事情,肯定会有日志记录来解释原因。

我怀疑你遇到了内存不足杀手的问题。

23

看起来你可能快没内存了——这在长时间运行的程序中很常见,尤其是如果有“内存泄漏”的情况(比如因为循环引用导致的)。Rackspace有没有什么简单好用的工具,可以帮助你监控一个程序的内存使用情况,这样你就能确认是不是这个问题?如果没有,这种情况用普通的Linux工具从外部监控也不难。一旦你确定“内存不足”可能是导致程序崩溃的原因,像pympler这样的Python专用工具可以帮助你准确找到问题出在哪里(这样你就可以想办法避免这些引用,比如把它们改成弱引用,或者用其他简单的方法来解决,或者直接去掉内存泄漏)。

撰写回答