如何防止这么多apt-check运行的实例?

Modified on: Thu, 14 Jun 2018 11:48:53 +0800

我有一个刚刚崩溃的Ubuntu 12.04服务器因为一个非常明显的原因:30多个apt-check进程占用了所有内存,OOM杀手开始使用,杀死了重要的服务。我不确定apt-check进程的来源,但我想我的Nagios / Icinga插件check_apt可能会使用它,以及byobu

如何防止在系统上有如此多的apt-check实例?它对我来说没有意义,只要它不能在dpkg数据库上获得读锁定就应该退出。

似乎我不是唯一遇到麻烦的人。对apt-check的所有建议都非常消极:

(干净的浏览器,未登录,无个性化搜索)

作者:Seth,gertvdijk

最佳答案

一些潜入apt-check给了我这些线索,因为它是一个需要修复的非常生硬的脚本。尽管对它的作者给予了应有的尊重,但它在我的服务器上失败了。以下是我的想法:

  • apt-check == /usr/lib/update-notifier/apt_check.py
  • 强迫自己的善举19
  • 没有为行动设置超时

最后两个的组合允许它以螺旋向下无休止地堆积。如果系统用于其他具有更高优先级的目的,那么进程数量将会增加并且没有结束,因为apt-check永远不会优先于它。一旦OOM杀手决定杀死你的重要系统进程,麻烦只会变得更糟。

如果行为中这两个方面中的任何一个不同,那么就不会允许系统以这种破碎的状态结束。

虽然字符串是正确的关于父进程在此负责,但我认为以下几点是 apt-check ,必须报告为正确处理的错误:

  • 应该暗示OOM杀手首先杀死自己
  • 它不应该设置nicelevel硬编码
  • 如果需要不合理的时间来获取信息
  • ,它应该退出

实际上,似乎Linux OOM杀手正在对此进行一些启发式操作。 Niced进程将获得更高的分数,并且长时间运行的进程将减少。 (来源 - 感谢Ulrich Dangel 指出来

我可能建议的可能解决方案:

  • 处理后缓存结果
  • 输出缓存,如果小于N秒,则不为每个简单(甚至apt-check)调用加载所有Python-APT库。
  • 让nicelevel可配置 - 请允许我更改/禁用此功能!我认为将其设置为0实际上会有所帮助
  • 让它增加OOM杀手得分

相关问答

添加新评论