我想ulimit -n
永久设置。我已经尝试将其添加到/etc/security/limits.conf
* soft cpu nofile 1048576
* hard cpu nofile 1048576
和编辑/proc/sys/fs/file-max
重新启动 Ubuntu 后,这两个文件仍然配置良好,但是当我这样做时,ulimit -n
我仍然得到默认限制。
我已经在/etc/security/limits.conf
. 当我以用户身份正常登录我的桌面环境时testuser
(使用 slimlogin
管理器),一切正常。
当我testuser
通过Xephyr
(从我的另一个会话作为另一个用户)以用户身份登录时,除了chromium
浏览器之外一切正常。这是我得到的错误dmesg
:
Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.
并且铬无法使用(它会启动,但会无限期地等待加载任何页面)
chromium
除了设置正确的限制之外的所有其他程序。我已经使用以下方法验证了这一点:
find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits \; | grep 'Max data size'
全部PIDs
设置Max data size
为无限制:
Max data size unlimited unlimited bytes
除了chromium
进程:
Max data size 4294967296 4294967296 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
我想了解:
1)为什么chromium
与所有其他程序有不同的限制?
2)“默认”限制来自哪里(铬从哪里获得限制4294967296
?
3)我如何才能一劳永逸地更改这些默认限制,全局,所有进程,无论它们是否使用 pam ?
我刚刚得知ulimit
.
这让我开始思考……如果我的系统带有一个一直过热的旧处理器,让我们举例说明;没有其他硬件可以插入,因为它太旧了;通过限制用户使用的系统资源量,这可能会使 CPU 保持凉爽并允许我从中复制我的东西吗?
我的意思是这听起来像是一种 hack,而不是 的预期目的ulimit
,但我只是想知道这是否有效。我也猜想,尽管您必须将其应用于系统上的所有用户。而且我还认为运行级别 1 也会导致类似的方式。
当我在其中运行多个 docker 容器时npm ci
,我开始收到pthread_create: Resource暂时不可用错误(少于 5 个 docker 容器可以正常运行)。我推断某处存在某种线程限制,但我找不到哪一个在这里阻塞。
npm ci
因为这似乎创建了很多线程;但我不认为问题与npm
它本身有关。码头主机
我可以看到不同形式的错误:
git clone
在容器内失败并出现错误:克隆远程 repo 'origin' 时出错 ... 原因:java.lang.OutOfMemoryError:无法创建新的本机线程npm ci
使用节点 [1296] 在容器内失败:pthread_create:资源暂时不可用我看了很多这个问题。
systemd
版本为 219,因此没有该TasksMax
属性。/proc/sys/kernel/threads-max
= 1798308kernel.pid_max
= 49152ps -elfT | wc -l
(/etc/security/limits.conf
(见下文)nproc
将限制设置为无限制。登录该用户ulimit -u
= 无限制。这仍然没有解决问题/etc/security/limits.conf :
* soft nproc unlimited
* soft stack 65536
* soft nofile 2097152
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) 899154
max locked memory (kbytes, -l) 1048576
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 65536
cpu time (seconds, -t) unlimited
max user processes (-u) 899154
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
我的 dockerd 进程的限制(/proc/16087/limits
16087 是 dockerd 的 pid 的猫)
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size unlimited unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes unlimited unlimited processes
Max open files 65536 65536 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 899154 899154 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
检查当前 shell 的打开文件(软)限制
/home/pkaramol
$ ulimit -n
1024
检查硬限制
/home/pkaramol
$ ulimit -n -H
1048576
将(软)限制设置为硬限制值并验证它是否有效:
/home/pkaramol
$ ulimit -n hard
/home/pkaramol
$ ulimit -n
1048576
问题是为什么下面的命令会同时修改硬 限制和软限制,因为当没有提供开关时,默认是在软限制上进行操作
/home/pkaramol
$ ulimit -n 2048
/home/pkaramol
$ ulimit -n
2048
/home/pkaramol
$ ulimit -n -H
2048
硬限制降低到什么时候2048
?
我正在设置几个 ulimit(系统是 rhel 7.5),但我找不到任何关于type
. 从内部/etc/security/limits.conf
我得到该类型可以获取两个值,而在配置示例中该文件包含有 3 个值:
在@students下面的文件示例中,有一个类型-。
何时使用- (破折号)?
....
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
.....
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
.....
我收到了来自 oracle 的电子邮件,要求更改 solaris 10 服务器的限制以使 oracle 应用程序正常工作,
不幸的是我没有 Solaris 的经验,所以需要帮助
值将如下所示
A00110 This rule verifies that the ulimit settings are adequate Oracle Database 11g R2. The recommended values are not less than:
ulimit(TIME) = unlimited
ulimit(FILE) = unlimited
ulimit(DATA) = 1048576
Soft ulimit(NOFILES) = 1024
Hard ulimit(NOFILES) = 65536
ulimit(VMEMORY) = 4194304
and not more than
Soft ulimit(STACK) = 10240
Hard ulimit(STACK) = 32768
VmemoryNotDefined
StackHardUnlimited Review the ulimit settings:
Set the hard ulimit(STACK) to a maximum of 32768
ulimit(VMEMORY) is not defined