问题标签 [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.
c - 如何在不限制堆栈的情况下限制使用“malloc()”获取的内存?
我试图阻止学生代码在分配中乱跑并将我的测试机器拖到停止状态。我试过了
r
保持限制的结构在哪里。但不幸的是,尽管这个限制停止brk
并停止sbrk
分配,C 库只是故障转移到mmap
并继续分配。
我也试过
这会使进程停止在其轨道上,但是这种补救措施太严重了——进程不可能从ENOMEM
错误中恢复,因为没有堆栈空间用于代码在遇到NULL
从返回的值时进行的调用malloc()
。
我对二进制文件的控制有限,所以如果可以使用系统调用,我会更喜欢。但我需要一些限制分配的方法,而不会破坏进程的恢复能力。有人有建议吗?
更新:我发现了一个叫做failmalloc的东西,但它不是很复杂,虽然我可以用它导致失败,但我总是得到一个 gdb 无法诊断的段错误。
进一步更新:我发现至少在某些情况下,setrlimit(RLIMIT_AS, r)
这似乎确实可以完成我想要的工作——之后发生的段错误是由不相关模块中的错误引起的。除非有人提出一些有趣的事情(或保留问题的理由),否则我可能会删除该问题。
c - 使用 setrlimit() 设置堆栈大小并引发堆栈溢出/段错误
在下面给出的示例中,我尝试将堆栈大小设置为 1kb。
为什么现在可以在堆栈上分配大小8kb
为 in的整数数组foo()
?
c - RLIMIT_AS 无法将其软限制设置为某个值
对于一个进程,我为资源设置了软限制值335544320
和硬限制值。即使设置了这个值,进程的地址空间也会上升到最大值。但是我能够看到正确设置为上述值的软限制和硬限制的值。1610612736
RLIMIT_AS
178MB
/proc/process_number/limits
我想知道是否RLIMIT_AS
可以在我的操作系统中运行,并且还想知道如何测试该RLIMIT_AS
功能。
CentOS 5.5(64 位)是我使用的操作系统。
有些人请在这方面帮助我。谢谢!
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 秒
python - 对未知代码设置限制的最佳方法是什么?
我正在使用一个 Python 库(SimpleParse),我似乎正在使用它导致一些失控的递归。当我试图调试它时,它已经让我的电脑崩溃了。
对我来说,对它使用多少内存设置一些限制的最佳方法是什么?
我在想我会用setrlimit编写一个快速的 C 程序来调用 Python,并从那里测试它。
c - 可以使用 setrlimit 在一段时间内强制执行资源使用限制吗?
我想为 execv 生成的程序可以使用一定数量的内存和一定数量的 CPU 时间设置限制。例如,我想设置一个限制,比如一个程序不能超过 100MB 30 秒,一个程序不能使用 90% 或更多的 CPU 超过 20 秒。
c++ - 查找当前打开文件句柄的数量(不是 lsof)
在 *NIX 系统上,有没有办法找出当前运行的进程中有多少打开的文件句柄?
我正在从有问题的正在运行的进程中寻找用于 C 语言的 API 或公式。
unix - 由于 setrlimit 是基于进程的,操作系统如何尊重 /etc/security/limits.conf 中配置的用户限制?
我注意到在 /etc/security/limits.conf 中,限制是基于每个用户(或每个组)配置的,例如:@faculty hard nproc 50
我假设设置限制的是setrlimit,但是setrlimit是在进程的基础上工作的,也就是说,它只在它的调用进程上设置资源限制,所以既然它不能对用户设置限制,那么操作系统如何尊重在limits.conf 中配置的资源限制?
另一个问题,如果某个进程超过了它的资源配额,它会被杀死吗?如果是这样,通过什么信号?谢谢你。
macos - 为什么 BSD 上的 RLIMIT_NOFILE rlim_max 为 -1?
在以下代码中:
setrlimit 行失败(我收到错误“调用 setrlimit”)。进一步调查表明,它limit.rlim_max
是 -1,这不是一个有效值。任何想法为什么会这样?这是在 Mac OSX 上。
linux - 限制分叉/子进程的数量
我在 Ubuntu 12.04 上托管一个计算服务,我需要一种方法来防止用户进行分叉炸弹攻击。我目前setrlimit(RLIMIT_NPROC)
在 Linux 中使用。但是,这实际上对给定 UID 的进程数设置了全局限制。因为我的服务有许多并行作业,都以相同的 UID 运行,这意味着一个进程可以 DOS 整个服务。
相反,我正在寻找一种方法来设置限制,例如当前进程的子进程的递归数量。我被告知要研究 linux cgroups
/libcgroup
但老实说,我真的不明白这如何解决我的问题。有小费吗?