#process #memory #docker #sigterm #stats #softly #kills

应用 preoomkiller

在进程耗尽内存之前,用 SIGTERM 软杀进程

5 个版本

使用旧的 Rust 2015

0.1.0 2021年11月2日
0.0.5 2021年7月7日
0.0.4 2021年6月26日
0.0.2 2018年8月13日
0.0.1 2017年1月23日

#467Unix API

MIT 许可证

10KB
111

在进程耗尽内存之前,用 SIGTERM 软杀进程。

  • 适用于在 docker 内运行的进程。
  • 默认使用 /sys/fs/cgroup/memory/memory.usage_in_bytes/sys/fs/cgroup/memory/memory.stat

用 Rust 编写以消耗最少资源。

版本:0.1.0

用法

从 target/your-arch 下载所需的二进制文件或 cargo install preoomkiller

Usage: target/debug/preoomkiller [options] args

Options:
    -m, --max-memory-file PATH
                        set file to read maximum memory from, default:
                        /sys/fs/cgroup/memory/memory.stat
    -u, --used-memory-file PATH
                        set file to read used memory from, default:
                        /sys/fs/cgroup/memory/memory.usage_in_bytes
    -i, --interval SECONDS
                        how often to check memory usage, default: 1
    -p, --percent PERCENT
                        maximum memory usage percent, default: 90
    -h, --help          print this help menu
    -v, --version       show version

构建

测试

使用 Ruby 进行测试,以便具有可读性/表达性。

  • 构建
  • gem install bundler ... 需要 ruby 安装
  • bundle
  • bundle exec rake

发布

  • bundle exec rake bump:修补程序
  • bundle exec rake release

待办事项

  • 通过分割字符串和手动搜索来删除 regex 依赖关系
  • travis + 在 crates.io 上显示状态
  • 当进程被杀死时杀死子进程(已有失败的测试)
  • 找到安全地执行 wait / kill ... 的方法 ... http://stackoverflow.com/questions/35093869
  • 为多个目标制作 rake bump 发布,并提交所有更改
  • 添加 --signal 选项 ... 支持数字和理想情况下 USR1 等单词
  • 将百分比转换为浮点数
  • 添加 --restart 选项以重启而不是杀死 ... 可能不这么做,因为这很棘手/需要限制

依赖项

~4MB
~77K SLoC