标签: ulimit

了解 linux 和 nginx 的最大文件描述符,以及 worker_rlimit_nofile 的最佳值

我在 nginx 上遇到了看似常见的“文件描述符过多”错误。经过多次搜索,解决方案显然是增加 nginx 可用的文件描述符的数量。但是没有足够的信息让我觉得以有意义和安全的方式做这件事。以下是大多数论坛/电子邮件主题涵盖的要点:

  • 操作系统有自己的总文件描述符限制(在我的系统上,cat /proc/sys/fs/file-max输出“100678”)
  • 每个用户也可以有自己的限制(但在我的系统上,ulimit在任何用户输出“无限”时运行,请参阅底部更新的更多详细信息
  • 一些人说了一些与此人所说的类似的话:'指令 worker_rlimit_nofile 没有指定“多少”,而是操作系统限制。如果不够,指令 worker_rlimit_nofile 只允许一种快速而肮脏的方式来扩大这个限制。所以我想这意味着为 nginx OS 用户设置限制而不是在配置中设置限制“更好”?

我可以将 worker_rlimit_nofile 值放入大于每个工作器连接数的值,并称其为一天,但我觉得我真的不知道这里发生了什么。

  • 为什么每个工人的限制会小于操作系统限制?
  • 我如何知道我现在的极限是多少?

更新:对根和一个普通用户,输出的ulimit“无限制”,但ulimit -Hnulimit -Sn两个输出1024

linux nginx ulimit

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

ulimit、launchctl、sysctl 的区别?

在管理操作系统(特别是 OSX)的限制时,这三个工具的功能和历史有什么区别和重叠:

  1. ulimit
  2. launchctl, launchd
  3. sysctl

我发现在 OSX 上调整最大进程数和打开文件限制令人困惑。

某些进程是通过终端还是通过 GUI 启动,这有关系吗?

可能相关:

mac-osx ulimit launchctl sysctl

12
推荐指数
1
解决办法
1691
查看次数

增加星号守护进程的文件 ulimit

如何增加 ubuntu 计算机上星号守护程序的文件限制?当我以 root 身份登录并使用 ulimit 时,它已经说无限制了。我无法以星号登录,因为该用户没有 shell 访问权限,它只是一个守护进程。

我可以看到在/proc/<asterisk proc id>/limits当前最大打开文件是 1024。我想加倍。

我什至进入 /etc/security/limit.conf 并添加

asterisk soft nofile 2048
asterisk hard nofile 2048
@asterisk soft nofile 2048
@asterisk hard nofile 2048
Run Code Online (Sandbox Code Playgroud)

然后我重新启动服务器。不过,最大打开文件数为 1024。

我还可以做些什么?

linux ulimit

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

在 mysql 5.5 中更改打开文件限制

我在使用 open-files-limit 参数在 Ubuntu 12.04 上运行 mysql 5.5 时遇到问题。

我最近注意到由于 1024 限制导致的一些问题,实际上主系统限制设置为 1024,因此我将 /etc/security/limits.conf 修改为以下内容:

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

之后我检查 root 甚至 mysql 用户的 ulimit 值,都返回了新值:32000,所以我假设更改已经完成。

我还更改了 my.cnf 文件中的值,将 open-files-limit 设置为 24000,如下所示:

open-files-limit    = 24000
Run Code Online (Sandbox Code Playgroud)

现在是奇怪的部分,当我重新启动 mysql 服务并检查 open_files_limit 变量时,它返回它仍然设置为 1024,所以我遇到了与之前(显然)相同的问题,我尝试使用 open-files-limit而是 my.cnf 配置文件中的 open_files_limit,结果相同,但如果我覆盖服务命令以启动服务并仅使用 mysqld 启动(没有其他参数),服务将启动,当我检查参数时,它返回 32000...我不知道它从哪里获取该值,因为它不是在 my.cnf 中设置的,也不是通过命令行提供的,至少不是为我自己提供的。

关于为什么更改不起作用以及如何以正常方式解决它(通过服务启动它...)的任何想法?

mysql ulimit open

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

为什么即使在更新到limits.conf 后,redis 仍报告1024 个文件的限制?

我在 redis.log 文件的顶部看到了这个错误:

当前最大打开文件数为 1024。maxclients 已减少到 4064 以补偿较低的 ulimit。

我已按照以下步骤操作(并重新启动):

此外,我在运行时看到了这一点ulimit

ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535
Run Code Online (Sandbox Code Playgroud)

这个错误似是而非吗?如果没有,我还需要执行哪些其他步骤?我在 Ubuntu LTS 14.04.1(再次,树尖)上运行 redis 2.8.13(树尖)。

这是用户信息:

ubuntu@ip-XX-XXX-XXX-XXX:~$ ps aux | grep redis
root      1027  0.0  0.0  66328  2112 ?        Ss   20:30   0:00 sudo -u ubuntu /usr/local/bin/redis-server /etc/redis/redis.conf
ubuntu    1107 19.2 48.8 7629152 7531552 ?     Sl   20:30   2:21 /usr/local/bin/redis-server *:6379               
Run Code Online (Sandbox Code Playgroud)

因此,服务器作为 ubuntu 运行。

这是我的limits.conf文件,没有注释:

ubuntu@ip-XX-XXX-XXX-XXX:~$ cat /etc/security/limits.conf | sed '/^#/d;/^$/d'
ubuntu soft nofile 65535
ubuntu hard nofile 65535
root soft nofile …
Run Code Online (Sandbox Code Playgroud)

ulimit redis

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

limit.conf 设置不“坚持”

试图在高负载 Web 服务器上获得相当于 ulimit -n 20000 的值,但是 ubuntu hardy 上的 /etc/security/limits.conf 似乎并没有坚持。

这是我在配置文件中设置的。

root             soft    nofile         20000
root             hard    nofile         20000
www-data             soft    nofile         20000
www-data             hard    nofile         20000
Run Code Online (Sandbox Code Playgroud)

我也试过

*             soft    nofile         20000
*             hard    nofile         20000
Run Code Online (Sandbox Code Playgroud)

重新启动后,当我在 root、www-data 或我的普通用户上运行 ulimit -n 时,我仍然看到默认的 1024。

ubuntu tcpip ulimit

8
推荐指数
1
解决办法
3512
查看次数

确定 root 用户的 ulimit

我们相信我们已经增加了 root 用户的最大打开文件描述符。这是通过将此行添加到 /etc/security/limits.conf 来完成的:

*         -    nofile            2048
Run Code Online (Sandbox Code Playgroud)

我们认为我们已经确认增加了 root 用户的限制,因为我们可以告诉(这里没有描述)我们的应用程序(solr - 由 root 运行)打开了 1098 个文件。但是,我们无法确定允许 root 用户打开多少个文件。我们希望这个命令可以工作,但它似乎不是:

$ sudo -u root -s "ulimit -Sn"
1024
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

linux ulimit solr

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

lsof 如何报告比 ulimit 所说的应该允许的数量更多的打开文件?

lsof 如何报告比 ulimit 所说的限制更多的打开文件?

prod_web3(i-ca0b05aa):~$ sudo lsof | wc -l
4399
prod_web3(i-ca0b05aa):~$ ulimit -n
1024
Run Code Online (Sandbox Code Playgroud)

lsof ulimit max-file-descriptors

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

如何为mongod设置ulimit?

如何mongod在 CentOS 上为进程/用户设置 ulimit ?

我已经阅读了官方文档,但它没有提供特定于操作系统的说明。

  • 我需要设置ulimit -u 64000并需要它在重启后保持不变。

  • 我正在运行 CentOS 5.5,但很快就会升级到 6.5。

  • 我不想修改包管理器安装的任何脚本

centos ulimit mongodb

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

在 /etc/security/limits.conf 中增加“nofile”限制有什么影响?

我找到了许多文章,描述了如何通过 /etc/security/limits.conf 增加打开文件数的限制,但我不明白这样做的影响。很多时候我看到人们将 1024 更新为 2048。好吧,这些文件句柄必须消耗 RAM 或其他东西。为什么不增加到 100000?我用打开的文件吃掉了哪些资源?

关于如何增加限制的问题:https : //stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in-linux

files ulimit

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

标签 统计

ulimit ×10

linux ×3

centos ×1

files ×1

launchctl ×1

lsof ×1

mac-osx ×1

max-file-descriptors ×1

mongodb ×1

mysql ×1

nginx ×1

open ×1

redis ×1

solr ×1

sysctl ×1

tcpip ×1

ubuntu ×1