当前位置: 首页 > 面试题库 >

Docker忽略limits.conf(试图解决“打开文件太多”错误)

曾新
2023-03-14
问题内容

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

这非常有效,除了在我对应用程序进行Docker部署和部署时-我发现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

经过一些研究,我发现人们可以通过以下方法解决类似的问题:

sudo bash -c "echo \"limit nofile 262144 262144\" >> /etc/init/docker.conf"

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

但是,以上所有方法均失败:当我的应用程序在容器内运行时,出现“打开文件过多”错误(在没有docker的情况下执行以下操作即可解决问题)。

我试图ulimit -a在容器内运行以获取ulimit设置是否起作用的指示,但是这样做会引发关于ulimit不是PATH一部分的可执行文件的错误。

任何人都遇到这个问题和/或可以提出一种使Docker重新认识极限的方法吗?


问题答案:

我可以使用以下配置来解决此问题:

我将ubuntu 14.04 linux用于docker机器和主机。

主机 上,您需要:

  • 更新/etc/security/limits.conf以包括:* - nofile 64000
  • 添加到您的/etc/sysctl.conf中: fs.file-max = 64000
  • 重新启动sysctl:sudo sysctl -p


 类似资料:
  • 我想知道太多文件打开错误的确切问题。我通过谷歌寻找解决方案,但我不知道为什么会出现这个问题以及如何解决这个问题。 堆栈错误:严重:套接字接受失败。网SocketException:java上打开的文件太多。网普通袜子。java上的socketAccept(本机方法)。网抽象素socketimpl。在java上接受(AbstractPlainSocketImpl.java:398)。网服务器插座。j

  • 问题内容: 创建容器时出现该错误消息。 但是我找不到有关该错误的任何信息。(我看到了https://github.com/docker/libcontainer/issues/211,但是那不是同样的问题。)有人知道吗? 谢谢。 问题答案: 默认的打开文件数限制为1024。可以通过两种方式增加它: 使用参数运行容器: 使用mode 运行容器并执行。 您可以在此处找到更多信息。

  • 问题内容: 这是一个简单的Go http(tcp)连接测试脚本 如果我在Ubuntu中运行它,我将得到: 其他帖子说,以确保连接,这就是我在这里所做的全部。还有人说,要增加最大连接数的限制或尝试使用,但仍然行不通。 如何在单个服务器上运行数百万个tcp连接goroutine?仅在2,000个连接时崩溃。 谢谢, 问题答案: 我认为您需要更改您的最大文件描述符。我之前在我的一个开发VM上遇到了相同的

  • 我有一个在tomcat上运行的应用程序,有时会出现以下错误: .... 我检查了打开文件的限制,它是1024个,但是当我检查了lsof应用程序的打开文件数量时,它接近200个,如果它没有达到限制,为什么会发生这种情况?我应该增加限额吗?是否有其他原因导致此错误?让服务重新正常运行的唯一方法是重新启动tomcat,还有其他恢复正常的方法吗? 提前谢谢。 编辑:这里是处理doPost方法的servle

  • 我正在编写一个需要读取/写入大量文件的遗传算法。GA的适用性测试是调用一个名为的程序,该程序将文件作为输入并生成文件作为输出。 一切都在工作,除非我使遗传算法的种群规模和/或总代数太大。然后,经过这么多代人,我开始得到这个:(我为许多不同的文件反复得到它,索引 只是我上次运行它时首先出现的那个)。这很奇怪,因为我不是在第一代或第二代之后得到错误,而是在相当多的世代之后,这表明每一代都会打开更多它没

  • 我正试图运行Jest测试,但得到以下错误: 令我感兴趣的是,错误中列出的路径指向node_modules目录中的一个文件,由于TestPathIgnorePatterns中的node_modules条目,我预计该文件不会被读取。 我运行的是节点4.2.1,我的React-Native安装才一周,我今天安装了Jest(所以我想我对所有东西都是最新的)。我在Mac电脑上。 我运行了:,关闭了所有终端窗