node.js Error: connect EMFILE 或者 getaddrinfo ENOTFOUND
Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo'
Error: connect EMFILE
本人在中心服上向800多个ip上发请求,发两次就不行了出现如上报错。
原因是文件句柄不够用了,修改 ulimit 即可,步骤如下:
1.vim /etc/security/limits.conf
2.添加两行内容:
* soft nofile 65536
* hard nofile 65536
3.退出当前终端,再进 ulimit -a 查看。
虽然显示对了,经过node.js测试仍报错,怀疑没立即生效,指令: grep "Max open files" /proc/39629/limits 显示还是1024,说明没生效。
解决办法:转自 https://blog.csdn.net/shootyou/article/details/6579139
主要是因为linux在文件句柄的数目上有两个级别的限制。一个是系统级别的总数限制,一个是针对用户的限制。
默认情况下每个用户所能使用的句柄数是1024。一般情况下1024也够用了,但是在大容量的系统上,特别是会频繁使用网络通信和文件IO的系统上,1024很快就被耗光了。所以首先我们要调整这个值。修改方法如下:
1. ulimit -a 查看当前用户的文件句柄限制
2. 用户级别的句柄数限制修改。
修改 /etc/security/limits.conf 增加下面的代码:
用户名(或者用*表示所有用户) soft nofile 65535
用户名 hard nofile 65535
有两种限制,一种是soft软限制,在数目超过软限制的时候系统会给出warning警告,但是达到hard硬限制的时候系统将拒绝或者异常了。
修改之后可能需要重启shell生效。
3. 系统级别的句柄数限制修改。
sysctl -w fs.file-max 65536
或者
echo "65536" > /proc/sys/fs/file-max
两者作用是相同的,前者改内核参数,后者直接作用于内核参数在虚拟文件系统(procfs, psuedo file system)上对应的文件而已。
可以用下面的命令查看新的限制
sysctl -a | grep fs.file-max
或者
cat /proc/sys/fs/file-max
修改内核参数
/etc/sysctl.conf
echo "fs.file-max=65536" >> /etc/sysctl.conf
sysctl -p
查看系统总限制 命令:cat /proc/sys/fs/file-max
查看整个系统目前使用的文件句柄数量命令:cat /proc/sys/fs/file-nr
查看某个进程开了哪些句柄 :lsof -p pid
某个进程开了几个句柄 :lsof -p pid |wc -l
也可以看到某个目录 /文件被什么进程占用了,显示已打开该目录或文件的所有进程信息 :lsof path/filename
转载于:https://www.cnblogs.com/workharder/p/10372472.html
node.js Error: connect EMFILE 或者 getaddrinfo ENOTFOUND相关推荐
- Node.js Error: Cannot find module express
启动node服务时遇到Error: Cannot find module express的报错 解决 # 卸载全局安装的express npm uninstall -g express npm uni ...
- node.js websocket connect的使用
通常我们都使用websocket中的createServer接口创建监听服务器,网上也有很多文章介绍这个用法.如果需要创建一个连接的场景,比如需要新建一个远程调用,这需要用到websocket的con ...
- Node.js Web 开发框架大全《中间件篇》
这篇文章与大家分享优秀的 Node.js 中间件模块.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处 ...
- 干货!如何用Node.js实现一个精巧的P2P网络
加密货币都是去中心化的应用,去中心化的基础就是P2P网络,其作用和地位不言而喻,无可替代.当然,对于一个不开源的所谓私链(私有区块链),是否必要,尚无定论. 事实上,P2P网络不是什么新技术.但是,使 ...
- Heroku + node.js错误(Web进程在启动后60秒内未能绑定到$ PORT)
本文翻译自:Heroku + node.js error (Web process failed to bind to $PORT within 60 seconds of launch) I hav ...
- puppeteer Error: getaddrinfo ENOTFOUND storage.googleapis.com
错误原因: 使用国内镜像时 puppeteer安装失败 解决方法: npm i --ignore-scripts 忽略各种报错命令 npm i --legacy-peer-deps --ignore- ...
- npm cb() never called!和 Error: getaddrinfo ENOTFOUND registry.npmjs.com registry.npmjs.com:443
我在服务器上执行 npm i 时竟然出错了,下面是错误的提示: npm ERR! cb() never called!npm ERR! This is an error with npm itself ...
- nuxt启动报错: Error: getaddrinfo ENOTFOUND 0
nuxt 项目启动,执行npm run dev 报错 Error: getaddrinfo ENOTFOUND 0 原因: nuxt.config.js 中 serve 配置项 host,把 '0' ...
- Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND 11000
创建一个新的React应用时发生错误 前些天在公司的电脑上重新搭建各种环境,突然出了这个问题. 使用命令:npx create-react-app demo 环境:node v16.3.0; npm ...
最新文章
- C语言——迭代法求a的平方根——更新01
- cx_Oracle模块
- Linux SElinux
- GraphQL 、flask-graphql、Graphene| 一种配得上凡尔赛的API框架
- 全新 ENVI Modeler 遥感建模工具
- VS遍历windows文件夹的代码
- php 音乐歌词xml,一篇文章玩转全网音乐信息库MusicBrainz API
- 第一道web类CTF题——一起来撸猫
- Android 自动点击工具,安卓自动点击器免费版
- vue 点击图标旋转
- java 时区id对应时区名称,Java 可以或失去的全部的时区ID
- c语言以字符输出88,C语言88案例完整版
- 一例Vmware虚拟化Vcenter连接不上解决过程。
- 腾讯的野望:一个游戏公司怎么拯救世界?
- 学校作业5_1字符串_文本分析与加密(头哥作业[Python])
- <Java>使用commons.io修改文件内容(中文标点符号改成英文)
- mysql中的resultt框没有了_mysql中的zentao.zt_config表格消失了
- 建一个网站需要花多少钱?
- 学习人工智能需要哪些必备基础
- 最大4k地址计算机组成原理,级计算机组成原理期末考试复习大纲资料.ppt