如何解决Linux下Too many open files问题

引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数。 通过命令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) 31767

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

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) 31767

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

可以看到,open files的配置是1024,可以通过如下命令将open files增加

ulimit -n 65535

这种修改方式可以临时把文件打开数量增加到65535,但是系统重启后这个配置会失效。

还有一种方式是修改系统的配置文件,以Ubuntu为例,配置文件默认在

/etc/security/limits.conf

在这个配置文件中增加

* soft nofile 65535* hard nofile 6553

如果要查看某个进程目前打开的句柄数量,可以通过如下命令:

lsof -p 进程ID|wc -l

此外,如果用supervisor托管和启动项目,会遇到这个配置无法生效的问题,原因在于supervisor会默认配置打开的句柄数量是1024,

如果要查看某个进程最大open files,可以通过这个进程的进程号对应的limits查看

cat /proc/进程ID/limits

其中有一行是:

Max open files10241024bytes

supervisor托管的程序这一行默认都是supervisor配置的最大数量1024,这时需要手动改一下supervisor的配置文件,修改方式如下,以Ubuntu系统为例,找到supervisor的配置文件supervisord.conf

在[supervisord]选项中,增加minfds选项的配置

[supervisord]minfds=65535 ; min. avail startup file descriptors; default 1024

配置完毕后,需要重启supervisor(以systemctl为例)

systemctl restart supervisor

即可生效

在通过:

cat /proc/进程号/limits

查看下对应进程的可open files的数量

Max open files6553565535bytes

以上就是如何解决Linux下Too many open files问题的详细内容,更多关于解决Linux下Too many open files问题的资料请关注我们其它相关文章!

(0)

相关推荐

  • Linux 目录结构详细介绍

    初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp --- 用户所有服务 httpd samba user1 user2 bin --- 系统启动时需要的执行文件(二进制) sbin --- 可执行程序的目录,但大多存放涉及系统管理的命令.只有root权限才能执行 proc --- 虚拟,存在linux内核镜像:保存所有内核参数以及系统配置信息 1

  • linux命令行下使用R语言绘图实例讲解

    使用系统:centos 6.4 64bit 在R语言中可以使用png()等函数生成图片,例如: png("aa.png")可以生成图片. 但是如果你是通过shell远程连接到系统上,可能会碰到如下错误: > png("aa.png") 错误于.External2(C_X11, paste("png::", filename, sep = ""), g$width,  :    无法打开PNG设备 此外: 警告信息: In

  • Linux常用命令之性能命令

    本文介绍Linux常用性能统计分析命令,监控进程或者系统性能.主要包括CPU(top.mpstat).内存(vmstat.free).I/O(iostat).网络性能(sar).系统日志信息(demsg).查看进程状态(pidstat).下面简要介绍这些命令的使用方法. mpstat.iostat.pidstat和sr命令需要安装sysstat软件包,sysstat包含了系统性能监测工具,安装方法如下: yum install sysstat # CentOS apt-get install s

  • 浅谈Linux的虚拟内存

    由来 虚拟内存 毋庸置疑,虚拟内存绝对是操作系统中最重要的概念之一.我想主要是由于内存的重要"战略地位".CPU太快,但容量小且功能单一,其他 I/O 硬件支持各种花式功能,可是相对于 CPU,它们又太慢.于是它们之间就需要一种润滑剂来作为缓冲,这就是内存大显身手的地方. 上图是虚拟内存最简单也是最直观的解释. 操作系统有一块物理内存(中间的部分),有两个进程(实际会更多)P1 和 P2,操作系统偷偷地分别告诉 P1 和 P2,我的整个内存都是你的,随便用,管够.可事实上呢,操作系统只

  • 使用docker在linux环境中部署springboot包的教程

    因为springboot是内嵌了tomcat服务器的,所以打成jar包后,是可以直接运行的. 首先我们看一下,在windows环境下的打包部署 1. 进行install打包 2. 检查,在target目录中是否存在了项目jar包 3.如果已经存在了项目jar包,就可以直接运行了(前面说了,springboot包是可以直接运行的) 4.在dos命令框中使用java -jar指令 java -jar springboot-nriat-common-demo-0.0.1-SNAPSHOT.jar 启动

  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    先说下自己之前的环境(都是Linux系统,差别不大): Centos7.6 NVIDIA Driver Version 440.33.01(等会需要更新驱动) CUDA10.1 Pytorch1.6/1.7 提示,如果想要保留之前的PyTorch1.6或1.7的环境,请不要卸载CUDA环境,可以通过Anaconda管理不同的环境,互不影响.但是需要注意你的NVIDIA驱动版本是否匹配. 在这里能够看到官方给的对应CUDA版本所需使用驱动版本. 通过上表可以发现,如果要使用CUDA11.1,那么需

  • linux 查看文件系统类型实例方法

    在Linux 中如何查看分区的文件系统类型,下面总结几种查看分区文件系统类型的方法. 1: df -T 命令查看 这个是最简单的命令,文件系统类型在Type列输出.只可以查看已经挂载的分区和文件系统类型.如下所示: [root@mylnx008 ~]# df -T /dev/sdb Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sdb xfs 315467264 4356404 311110860 2% /mysql

  • 解析Linux下C++编译和链接

    编译原理 将如下最简单的C++程序(main.cpp)编译成可执行目标程序,实际上可以分为四个步骤:预处理.编译.汇编.链接,可以通过 g++ main.cpp –v看到详细的过程,不过现在编译器已经把预处理和编译过程合并. 预处理:g++ -E main.cpp -o main.ii,-E表示只进行预处理.预处理主要是处理各种宏展开:添加行号和文件标识符,为编译器产生调试信息提供便利:删除注释:保留编译器用到的编译器指令等. 编译:g++ -S main.ii –o main.s,-S表示只编

  • linux系统下pip升级报错的解决方法

    Pip 安装 1.在python中提供了一个get-pip.py;下面是地址 https://bootstrap.pypa.io/get-pip.py 2.在Linux下执行curl https://bootstrap.pypa.io/get-pip.py | python 进行下载安装 这样很方便了  想装什么包就装什么包 Pip install xxx 注意:升级完python版本注意,可能你的yum命令不能使用,因为yum命令使用python写的 # vi /usr/bin/yum #打开

  • 如何解决Linux下Too many open files问题

    引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数. 通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少 core file size          (blocks, -c) 0 data seg size           (kbytes, -d) unlimited scheduling priority             (-e) 0 file size               (blocks, -f) unlimited pending

  • 解决linux下openoffice word文件转PDF中文乱码的问题

    网上很多介绍是由于jdk中的没有字体导致乱码,而我遇到的是转换过程并未报错,但转换后的PDF中是乱码,尝试在jre/lib/fonts/中增加字体,还是不能解决问题,因此可以判断非jre字体问题,是linux系统字体问题. 用vim /etc/fonts/fonts.conf,可以看到系统字体文件在/usr/share/fonts,将windows系统字体文件连接到此目录下 ln -s /usr/local/fonts fonts 然后更新缓存:fc-cache 重启openoffice: /o

  • 解决linux下vim中文乱码的方法

    Vim编码的详细介绍 Vim和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括 UCS-2.UTF-8 等流行的 Unicode 编码方式. Vim 有四个跟字符编码方式有关的选项,encoding.fileencoding.fileencodings.termencoding (这些选项可能的取值请参考 Vim 在线帮助  :help encoding-names),它们的意义如下: 1.encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buf

  • 完美解决linux下U盘文件只读的问题

    1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul  8 16:44:50 cslouis-pc kernel: [15595.155904] FAT: Filesystem error (dev sdb4) Jul  8 16:44:50 cslouis-pc kernel: [15595.155905]    fat_get_cluster: invalid cluster chain (

  • 解决Linux下Mysql5.7忘记密码问题

    一.问题 linux下的mysql5.7忘记密码 二.解决 •第一步:打开mysql5.7的配置文件my.cnf,并在里面增加一行:skip-grant-tables   保存并退出(:wq) [root@iz09a32x1sghz3z ~]# vi /etc/my.cnf •第二步:重启mysql [root@iz09a32x1sghz3z ~]# service mysqld restart •第三步:登录mysql并且修改密码 用root账号登录: [root@iz09a32x1sghz3

  • 完美解决linux下node.js全局模块找不到的情况

    今天在在linux上用npm安装了pm2准备部署node项目,结果通过pm2命令启动项目的时候报pm2找不到,这很伤,以为pm2没有安装成功,但是在node安装目录下面的bin文件夹里面调用pm2却没问题. /usr/local/node/node-v7.3.0-linux-x64/bin/pm2 list 类似这样调用pm2 list命令查看pm2启动的项目没有任何问题. 原来linux系统上通过npm全局安装了模块以后,不能像windos下面那样自动配置环境变量,需要自己动手配置...好吧,

  • 解决linux下node.js全局模块找不到的问题

    今天在在linux上用npm安装了pm2准备部署node项目,结果通过pm2命令启动项目的时候报pm2找不到,这很伤,以为pm2没有安装成功,但是在node安装目录下面的bin文件夹里面调用pm2却没问题. /usr/local/node/node-v7.3.0-linux-x64/bin/pm2 list 类似这样调用pm2 list命令查看pm2启动的项目没有任何问题. 原来linux系统上通过npm全局安装了模块以后,不能像windos下面那样自动配置环境变量,需要自己动手配置...好吧,

  • 解决linux下redis数据库overcommit_memory问题

    背景 公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf a

  • 解决linux下zip文件解压乱码问题

    原因 由于zip格式并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8. 解决方案一 使用7z解压. 安装p7zip和convmv # fedora $ su -c 'yum install p7zip convmv' # ubuntu $ sudo apt-get install p7zip convmv 执行一下命令解压缩 # 使用7z解压缩 $ LANG=C 7

  • 解决Linux下php-fpm进程过多导致内存耗尽问题

    最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是决心开始解决问题,解放我的时间和精力(我可不想经常出问题,然后人工重启,费力费时). 分析问题 发现问题以后,首先使用 free -m 指令查看当前服务器执行状况: 可以看到我的服务器内存是2G的,但是目前可用内存只剩下70M,内存使用率高达92%,很有可能是内存使用率过高导致数据库服务挂断. 继续看详细情况,使用 top 指令: 然后再看指令输出结果中详细列出的进程情况,重点关注第10列内存使用

随机推荐