标签: ulimit

如何在Mac OS X上使用ulimit或每个进程为C或Ruby程序更改堆栈大小?

似乎为C程序或Ruby程序(使用C堆栈)设置堆栈大小的推荐方法是ulimit在Bash shell中使用.但

$ ulimit -s
8192

$ ulimit -s 16384
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

sudo没有帮助.有没有办法将其设置为16MB,32MB或64MB?我认为应该有一种方法来设置每个程序调用,而不是设置系统范围的参数?

现在8192可能意味着8MB这是非常小的,如果将其与进程可以使用的数量进行比较,有时甚至高达2GB的RAM.

(更新的注释: ulimit -a可以显示其当前值).

(更新2:它实际上似乎ulimit -s <value>是每个shell,如果你第一次设置它,它通常会工作.问题是当你第二次设置它,然后它可能会返回一个错误)

c ruby stack ulimit

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

驻留集大小(RSS)限制无效

在运行带有2.6.32-22通用内核的Ubuntu 10.04的计算机上会出现以下问题:设置进程的驻留集大小(RSS)的限制似乎没有任何影响.我目前使用以下代码在Python中设置限制:

import resource
# (100, 100) is the (soft, hard) limit. ~100kb.
resource.setrlimit(resource.RLIMIT_RSS, (100, 100))
memory_sink = ['a']*10000000   # this should fail
Run Code Online (Sandbox Code Playgroud)

列表memory_sink每次都成功.当我使用top检查RSS使用情况时,我可以轻松地使用1gb的RAM进程,这意味着限制无效.RSS限制不适用于此内核或发行版吗?如果有帮助,resource.RLIMIT_NPROC(用户进程限制)确实有效.

python resources limits pam ulimit

16
推荐指数
2
解决办法
9526
查看次数

Docker忽略limits.conf(尝试解决"打开文件太多"错误)

我正在运行一个处理数千个并发Web套接字连接的Web服务器.为了实现这一点,在Debian linux上(我的基本图像是google/debian:wheezy,在GCE上运行),默认打开文件数设置为1000,我通常只将ulimit设置为所需的数字(64,000) .

这很好,除了当我将我的应用程序停靠并部署它时 - 我发现docker类型忽略了限制定义.我尝试了以下(所有在主机上,而不是在容器本身):

MAX=64000
sudo bash -c "echo \"* soft nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"* hard nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"ulimit -c $MAX\" >>  /etc/profile"
ulimit -c $MAX
Run Code Online (Sandbox Code Playgroud)

在做了一些研究后,我发现人们能够通过这样做来解决类似的问题:

sudo bash -c "echo \"limit nofile 262144 262144\" >> /etc/init/docker.conf"
Run Code Online (Sandbox Code Playgroud)

并重新启动/重新启动docker服务.

但是,以上所有都失败了:当我的应用程序在容器内部运行时,我收到"太多打开文件"错误(执行以下操作时,没有docker解决了问题).

我试图ulimit -a在容器内部运行以获得ulimit设置是否有效的指示,但这样做会引发一个关于ulimit的错误,而不是作为PATH一部分的可执行文件.

任何人遇到这个和/或可以建议让码头工人识别极限的方法?

linux debian ulimit google-compute-engine docker

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

打开的文件太多(ulimit已经更改)

我正在使用tomcat 7和java 1.7开发debian服务器.这是一个收到多个TCP连接的应用程序,每个TCP连接都是java进程打开的文件.

看着/proc/pid of java/fd我发现,有时,打开文件的数量超过1024,当发生这种情况时,我会在catalina.out日志中找到stacktrace_SocketException: Too many open files_

我发现有关此错误的一切,人们都提到了ulimit,我已经改变了这个问题并且错误一直在发生.这是配置:

/etc/security/limits.conf

root    soft    nofile  8192
root    hard    nofile  8192
Run Code Online (Sandbox Code Playgroud)

/etc/sysctl.conf

fs.file-max = 300000
Run Code Online (Sandbox Code Playgroud)

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) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 8192
pipe size            (512 bytes, …
Run Code Online (Sandbox Code Playgroud)

socketexception ulimit

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

Docker主机与容器中的Ulimits

我无法找到这个问题的直接答案,但这里是:

假设我有一个拥有最大打开文件1024的主机:

[root@host]# ulimit -a
open files                      (-n) 1024
Run Code Online (Sandbox Code Playgroud)

以及在该主机中运行的docker容器:

[root@container]# ulimit -a
open files                      (-n) 1048576
Run Code Online (Sandbox Code Playgroud)

如果我尝试打开超过1024个文件,我会在容器中遇到问题吗?我认为在这种情况下容器的实际限制将是1024个文件.你怎么看?

containers ulimit docker

14
推荐指数
3
解决办法
5022
查看次数

如何在 WSL2 上的 Ubuntu 20.04 中提高打开文件的限制?

我的设置如下所示:Windows 10, Release 1909 (Build 18363.1082),在 Ubuntu 20.04 环境中使用 WSL2。大多数时候一切都很好,但有些问题我无法解决。

在使用parcel(React bundler) 进行开发期间,我遇到了 bundler 显然同时打开大量文件的问题,并且在某个时候,我遇到了以下问题:

EMFILE: too many open files, open '/home/myusername/Projects/some-project-path/node_modules/@material-ui/icons/esm/RoundedCornerRounded.js'
Run Code Online (Sandbox Code Playgroud)

由于parcel看似不容易支持使用类似的东西graceful-fs,我试图增加在 Ubuntu 环境中打开文件的限制。到目前为止我尝试过的:

  • 一个简单的ulimit -n 4096(默认情况下是最高的),但显然(到目前为止?)还不够
  • 我尝试增加到fs.files-max非常高的值/etc/sysctl.conf,但它似乎没有效果(无论sysctl -p是在 重启之后还是重启之后wsl
  • 我也尝试增加fs.inotify.max_user_watches,但这似乎也没有效果
  • 还设置软硬限制/etc/security/limits.conf似乎没有效果
  • 我还发现,信息变更DefaultLimitNOFILE/etc/systemd/system.conf可以有效果(所以我这样做,以及)

有没有人设法在 WSL2 上的 Ubuntu 20.04 上解决类似的系统?这让我很困惑,它阻止我parcel在这个环境中使用。这真的很遗憾,因为其他一切都运行良好。


更新

所以我发现我在不同地方(可能是/etc/security/limits.conf)的变化产生了某种影响。只是在直接登录时不会。这说明了这一点:

donmartin@SOMEMACHINE:~$ ulimit -Hn
4096
donmartin@SOMEMACHINE:~$ su donmartin
Password: …
Run Code Online (Sandbox Code Playgroud)

ulimit windows-subsystem-for-linux parceljs wsl-2

14
推荐指数
1
解决办法
4954
查看次数

Linux上的最大打开文件限制是多少?

在Linux上,当进程打开文件时,操作系统将检查最大打开文件限制.

如果限制是1024,这个数字是什么意思?

它代表了吗?

  • 进程打开的文件数
  • 拥有该进程的用户打开的文件数
  • 当前OS中所有已打开文件的数量?

linux ulimit

13
推荐指数
1
解决办法
3万
查看次数

Ubuntu 16.04使用ulimit系统redis问题

从Ubuntu 14.04交换到16.04后,我的新redis服务器出现了问题.使用所有指南配置打开文件限制说使用以下设置更改/etc/security/limits.conf

*    soft nofile 65535
*    hard nofile 65535
root soft nofile 65535
root hard nofile 65535
Run Code Online (Sandbox Code Playgroud)

并且还要添加到/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive

session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)

我已经完成了所有这些更改,但redis仍然启动时文件限制为4096,在生产负载下,我们很快达到最大连接数.

ubuntu ulimit redis systemd ubuntu-16.04

13
推荐指数
1
解决办法
7466
查看次数

为什么ulimit不能成功限制驻留内存以及如何?

我启动一个新的bash shell,并执行:

ulimit -m 102400
ulimit -a
"
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 20
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 102400
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) unlimited …
Run Code Online (Sandbox Code Playgroud)

linux shell administration ulimit

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

bash fork错误(资源暂时不可用)不会停止,每次我尝试杀死/重启时都会一直显示

我错误地使用有限的服务器作为5000并行连接的iperf服务器.(限制是1024个进程)现在每次登录时,我都会看到:

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

然后,我试图杀死他们,但是当我做ps时,我得到了这个:

-bash-4.1$ ps
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

当我做一个killall或类似的事情时也会发生同样的事情.我甚至试图重启系统,但这又是我重启后得到的:

-bash-4.1$ sudo reboot
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: …
Run Code Online (Sandbox Code Playgroud)

linux bash fork process ulimit

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