我执行以下命令:
ulimit -a它给出的产出如下:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14881
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 14881
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited问题是:一旦达到这个极限,会发生什么?我怎么知道这个限制已经达到了,现在我需要执行一些步骤了?
例如,如果最大用户进程达到819200,那么这是否意味着新进程不会启动?还是系统会优雅地关闭大部分空闲进程以腾出一些空间?或者可能是别的什么?
上述数字/限制是否会增加系统性能的开销?
发布于 2018-08-07 15:39:38
如果代表应用程序分配资源超过了该应用程序的资源限制,则资源分配将失败。如果“最大用户进程”值为N,并且为给定用户运行了N个进程,那么对fork() (或相关的)系统调用的调用将失败。如果“打开的文件”值为M,并且存在M打开的文件,则对open() (或相关的)系统调用的调用将失败。
这些值不会给系统性能增加任何开销,因为系统总是监视这些值。
发布于 2018-08-07 15:41:53
您所包含的输出数据并不是真正的资源限制,因为您的shell欺骗并将许多无关的其他内容添加到此列表中。
如果您想查看什么是真正的资源限制,可以使用不欺骗的shell,或者检查文件。
/usr/include/sys/resource.h并查找该文件中的RLIMIT_*条目。
现在,如果你达到一个软的极限,会发生什么:
如果达到了硬限制,这个过程就会终止。
请注意,这并不适用于所有限制。检查http://schillix.sourceforge.net/man/man2/getrlimit.2.html是否有关于在每个特定限制上发生的事情的描述。
https://unix.stackexchange.com/questions/461097
复制相似问题