相关疑难解决方法(0)

限制单个 Linux 进程的内存使用

我正在pdftoppm将用户提供的 PDF 转换为 300DPI 图像。这很好用,除非用户提供页面非常大的 PDF。 pdftoppm将分配足够的内存来在内存中保存该大小的 300DPI 图像,对于 100 英寸的方形页面,它是 100*300 * 100*300 * 4 字节/像素 = 3.5GB。恶意用户可以给我一个愚蠢的大 PDF 并导致各种问题。

所以我想做的是对我即将运行的子进程的内存使用设置某种硬限制——如果它试图分配超过 500MB 的内存,就让进程死掉。那可能吗?

我不认为 ulimit 可以用于此,但是否有一个等价的进程?

linux memory ulimit

207
推荐指数
7
解决办法
30万
查看次数

如何限制进程及其子进程的总资源(内存)

关于限制单个进程的资源有很多问题和答案,例如RLIMIT_AS可以用来限制进程分配的最大内存,可以看成是VIRT之类的top。有关该主题的更多信息,例如这里有没有办法限制特定进程在 Unix 中可以使用的内存量?

setrlimit(2) 文档说:

通过 fork(2) 创建的子进程继承其父进程的资源限制。跨 execve(2) 保留资源限制。

应该这样理解:

如果一个进程的 RLIMIT_AS 为 2GB,那么它不能分配超过 2GB 的内存。当它产生一个子进程时,2GB 的地址空间限制将传递给子进程,但从 0 开始计数。这两个进程一起最多可以占用 4GB 的内存。

但是,限制整个进程树分配的内存总量的有用方法是什么?

linux memory limit resources

21
推荐指数
2
解决办法
9123
查看次数

标签 统计

linux ×2

memory ×2

limit ×1

resources ×1

ulimit ×1