问题标签 [setrlimit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1323 浏览

c - 如何在不限制堆栈的情况下限制使用“malloc()”获取的内存?

我试图阻止学生代码在分配中乱跑并将我的测试机器拖到停止状态。我试过了

r保持限制的结构在哪里。但不幸的是,尽管这个限制停止brk并停止sbrk分配,C 库只是故障转移到mmap并继续分配。

我也试过

这会使进程停止在其轨道上,但是这种补救措施太严重了——进程不可能从ENOMEM错误中恢复,因为没有堆栈空间用于代码在遇到NULL从返回的值时进行的调用malloc()

我对二进制文件的控制有限,所以如果可以使用系统调用,我会更喜欢。但我需要一些限制分配的方法,而不会破坏进程的恢复能力。有人有建议吗?

更新:我发现了一个叫做failmalloc的东西,但它不是很复杂,虽然我可以用它导致失败,但我总是得到一个 gdb 无法诊断的段错误。

进一步更新:我发现至少在某些情况下,setrlimit(RLIMIT_AS, r) 似乎确实可以完成我想要的工作——之后发生的段错误是由不相关模块中的错误引起的。除非有人提出一些有趣的事情(或保留问题的理由),否则我可能会删除该问题。

0 投票
2 回答
12648 浏览

c - 使用 setrlimit() 设置堆栈大小并引发堆栈溢出/段错误

在下面给出的示例中,我尝试将堆栈大小设置为 1kb。

为什么现在可以在堆栈上分配大小8kb为 in的整数数组foo()

0 投票
1 回答
3132 浏览

c - RLIMIT_AS 无法将其软限制设置为某个值

对于一个进程,我为资源设置了软限制值335544320和硬限制值。即使设置了这个值,进程的地址空间也会上升到最大值。但是我能够看到正确设置为上述值的软限制和硬限制的值。1610612736RLIMIT_AS178MB/proc/process_number/limits

我想知道是否RLIMIT_AS可以在我的操作系统中运行,并且还想知道如何测试该RLIMIT_AS功能。

CentOS 5.5(64 位)是我使用的操作系统。

有些人请在这方面帮助我。谢谢!

0 投票
1 回答
3350 浏览

jvm - java.lang.OutOfMemoryError:为 CHeapObj-new 请求了 16 个字节。交换空间不足?

我在尝试启动 Java 搜索进程(启动 Java 进程)时遇到此错误。我正在使用RLIMIT_AS.

请帮助我克服这个错误。

我对 VM Arguements 有疑问。(见下文)。有没有办法在不更改配置的情况下解决这个问题。(虚拟机参数)

Java 运行时环境检测到一个致命错误:

java.lang.OutOfMemoryError:为 CHeapObj-new 请求了 16 个字节。交换空间不足?

内部错误 (allocation.inline.hpp:39), pid=16994, tid=1097390400 错误: CHeapObj-new

JRE 版本:6.0_21-b06 Java VM:Java HotSpot(TM) 64-Bit Server VM (17.0-b16 混合模式 linux-amd64 ) 如果您想提交错误报告,请访问: http://java.sun .com/webapps/bugreport/crash.jsp


- - - - - - - - 线 - - - - - - - -

当前线程 (0x00000000489a7800): JavaThread "main" [_thread_in_vm, id=17043, stack(0x000000004158d000,0x000000004168e000)]

堆栈:[0x000000004158d000,0x000000004168e000],sp=0x00000000416897f0,可用空间=3f10000000000000018k

VM 状态:不在安全点(正常执行)

VM Mutex/Monitor 当前由一个线程拥有:无

Heap PSYoungGen total 38208K, used 24989K [0x00002aaae8f80000, 0x00002aaaeba20000, 0x00002aab03a20000) eden space 32768K, 76% used [0x00002aaae8f80000,0x00002aaaea7e7518,0x00002aaaeaf80000) from space 5440K, 0% used [0x00002aaaeb4d0000,0x00002aaaeb4d0000,0x00002aaaeba20000) to space 5440K, 0% used [ 0x00002aaaeaf80000,0x00002aaaeaf80000,0x00002aaaeb4d0000) PSOldGen total 87424K, used 0K [0x00002aaab3a20000, 0x00002aaab8f80000, 0x00002aaae8f80000) object space 87424K, 0% used [0x00002aaab3a20000,0x00002aaab3a20000,0x00002aaab8f80000) PSPermGen total 21248K, used 10141K [0x00002aaaae620000, 0x00002aaaafae0000, 0x00002aaab3a20000) object space 21248K, 47% 使用 [0x00002aaaaae620000,0x00002aaaaf007410,0x00002aaaaafae0000)

虚拟机参数: jvm_args: -Xms128M -Xmx1280M -D.config=path -D.home=path1 -D .logfile=path2 java_command: com. .base.Server 启动器类型:SUN_STANDARD

操作系统:CentOS 5.5 版(最终版)

uname:Linux 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 libc:glibc 2.5 NPTL 2.5 rlimit: STACK 10240k, CORE 1000001k, NPROC 24576, NOFILE 4096, AS 1835008k 平均负载:1.87 0.45 0.22

CPU:共 2 个(每个 CPU 1 个内核,每个内核 1 个线程)系列 6 型号 46 步进 6、cmov、cx8、fxsr、mmx、sse、sse2、sse3、ssse3、sse4.1、sse4.2、popcnt

内存:4k页面,物理2959608k(2057540k免费),交换4096532k(4096532k免费)

vm_info:用于 linux-amd64 JRE (1.6.0_21-b06) 的 Java HotSpot(TM) 64 位服务器 VM (17.0-b16),由“java_re”和 gcc 3.2.2 ( SuSE Linux)

时间:2011 年 3 月 22 日星期二 03:08:27 经过时间:5 秒

0 投票
2 回答
124 浏览

python - 对未知代码设置限制的最佳方法是什么?

我正在使用一个 Python 库(SimpleParse),我似乎正在使用它导致一些失控的递归。当我试图调试它时,它已经让我的电脑崩溃了。

对我来说,对它使用多少内存设置一些限制的最佳方法是什么?

我在想我会用setrlimit编写一个快速的 C 程序来调用 Python,并从那里测试它。

0 投票
2 回答
408 浏览

c - 可以使用 setrlimit 在一段时间内强制执行资源使用限制吗?

我想为 execv 生成的程序可以使用一定数量的内存和一定数量的 CPU 时间设置限制。例如,我想设置一个限制,比如一个程序不能超过 100MB 30 秒,一个程序不能使用 90% 或更多的 CPU 超过 20 秒。

0 投票
4 回答
3587 浏览

c++ - 查找当前打开文件句柄的数量(不是 lsof)

在 *NIX 系统上,有没有办法找出当前运行的进程中有多少打开的文件句柄?

我正在从有问题的正在运行的进程中寻找用于 C 语言的 API 或公式。

0 投票
3 回答
2971 浏览

unix - 由于 setrlimit 是基于进程的,操作系统如何尊重 /etc/security/limits.conf 中配置的用户限制?

我注意到在 /etc/security/limits.conf 中,限制是基于每个用户(或每个组)配置的,例如:@faculty hard nproc 50

我假设设置限制的是setrlimit,但是setrlimit是在进程的基础上工作的,也就是说,它只在它的调用进程上设置资源限制,所以既然它不能对用户设置限制,那么操作系统如何尊重在limits.conf 中配置的资源限制?

另一个问题,如果某个进程超过了它的资源配额,它会被杀死吗?如果是这样,通过什么信号?谢谢你。

0 投票
1 回答
652 浏览

macos - 为什么 BSD 上的 RLIMIT_NOFILE rlim_max 为 -1?

在以下代码中:

setrlimit 行失败(我收到错误“调用 setrlimit”)。进一步调查表明,它limit.rlim_max是 -1,这不是一个有效值。任何想法为什么会这样?这是在 Mac OSX 上。

0 投票
1 回答
1503 浏览

linux - 限制分叉/子进程的数量

我在 Ubuntu 12.04 上托管一个计算服务,我需要一种方法来防止用户进行分叉炸弹攻击。我目前setrlimit(RLIMIT_NPROC)在 Linux 中使用。但是,这实际上对给定 UID 的进程数设置了全局限制。因为我的服务有许多并行作业,都以相同的 UID 运行,这意味着一个进程可以 DOS 整个服务。

相反,我正在寻找一种方法来设置限制,例如当前进程的子进程的递归数量。我被告知要研究 linux cgroups/libcgroup但老实说,我真的不明白这如何解决我的问题。有小费吗?