相关疑难解决方法(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万
查看次数

有没有办法限制特定进程在 Unix 中可以使用的内存量?

我需要测试一个内存管理过程。

  • 我没有源代码,所以我需要从操作系统端进行所有测试。
  • 我希望能够说类似的话 limitmemory 400k -p <pid>

有没有办法在unix中做到这一点?任何常见的 Unix 实用程序都很棒。

process memory limit

40
推荐指数
4
解决办法
6万
查看次数

使用 `nsenter:` 监禁子进程的可靠方法

我知道 Linux 命名空间,除此之外,还可以用来安全地处理限制和监禁子进程,而不会让它们被僵尸化和转储到init. 但我对实现细节很模糊。我如何使用util-linux诸如mountand提供的工具nsenter来监视、监视和确保启动的所有进程都是另一个进程的直接命名空间后代?

process namespace

16
推荐指数
1
解决办法
7964
查看次数

如何限制应用程序内存使用?

我花了2个小时阅读关于这件事的问题,但仍然存在一些误解。

我有这个过程:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND    
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
Run Code Online (Sandbox Code Playgroud)

这表明它使用19.3Mb系统驻留内存(我没有交换文件),1.8%整个1GB系统内存。虚拟大小是1.39GB?!?。我读过那ulimit -m不起作用。人们使用ulimit -v例如为进程设置虚拟内存。这个虚拟内存是与 VSZ 一起列出的ps吗?如果我想限制这个进程100MB最多使用系统内存,我应该设置什么值。我已阅读文档setrlimit,这似乎是合法的:

RLIMIT_AS
        This  is  the maximum size of a process' total available memory, 
        in bytes. If this limit is exceeded, the malloc() and mmap() 
        functions shall fail with errno set to [ENOMEM]. In addition, …
Run Code Online (Sandbox Code Playgroud)

linux memory

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

memory ×3

linux ×2

process ×2

limit ×1

namespace ×1

ulimit ×1