加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 18:13:33 所属栏目:Linux 来源:网络整理
导读:我正在运行一个正在处理数千个并发Web套接字连接的Web服务器.为了这个可能,在Debian linux(我的基本形象是谷歌/ debian:wheezy,在GCE上运行),默认的打开文件数量设置为1000,我通常只是将ulimit设置为所需的数字(64,000) . 这样做很棒,除了当我对应用程序进
我正在运行一个正在处理数千个并发Web套接字连接的Web服务器.为了这个可能,在Debian linux(我的基本形象是谷歌/ 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的情况下执行以下操作可以解决问题).

我尝试在容器中运行ulimit -a以获取ulimit设置是否正常工作,但是调用容器内的ulimit会引发一个关于ulimit的错误,而不是作为PATH的一部分的可执行文件.

任何人都遇到这种情况,和/或可以建议一种方式让码头工作人员识别出极限?

干杯,

要么

解决方法

我能够通过以下配置来减轻这个问题:

我使用ubuntu 14.04 linux作为docker机器和主机.

在主机上您需要:

>更新/etc/security/limits.conf以包含:* – nofile 64000>添加到你的/etc/sysctl.conf:fs.file-max = 64000重启sysctl:sudo sysctl -p

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读