node.js Error: connect EMFILE 或者 getaddrinfo ENOTFOUND
Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo'
Error: connect EMFILE
本人在中心服上向800多個(gè)ip上發(fā)請(qǐng)求,發(fā)兩次就不行了出現(xiàn)如上報(bào)錯(cuò)。
原因是文件句柄不夠用了,修改? ulimit 即可,步驟如下:
1.vim /etc/security/limits.conf
2.添加兩行內(nèi)容:?
* soft nofile 65536?
* hard nofile 65536
3.退出當(dāng)前終端,再進(jìn)? ulimit -a 查看。
雖然顯示對(duì)了,經(jīng)過(guò)node.js測(cè)試仍報(bào)錯(cuò),懷疑沒(méi)立即生效,指令: grep "Max open files" /proc/39629/limits? ?顯示還是1024,說(shuō)明沒(méi)生效。
解決辦法:轉(zhuǎn)自??https://blog.csdn.net/shootyou/article/details/6579139
主要是因?yàn)閘inux在文件句柄的數(shù)目上有兩個(gè)級(jí)別的限制。一個(gè)是系統(tǒng)級(jí)別的總數(shù)限制,一個(gè)是針對(duì)用戶的限制。
默認(rèn)情況下每個(gè)用戶所能使用的句柄數(shù)是1024。一般情況下1024也夠用了,但是在大容量的系統(tǒng)上,特別是會(huì)頻繁使用網(wǎng)絡(luò)通信和文件IO的系統(tǒng)上,1024很快就被耗光了。所以首先我們要調(diào)整這個(gè)值。修改方法如下:
1. ulimit -a 查看當(dāng)前用戶的文件句柄限制
2. 用戶級(jí)別的句柄數(shù)限制修改。
修改 /etc/security/limits.conf 增加下面的代碼:
用戶名(或者用*表示所有用戶) soft nofile 65535
用戶名 hard nofile 65535
有兩種限制,一種是soft軟限制,在數(shù)目超過(guò)軟限制的時(shí)候系統(tǒng)會(huì)給出warning警告,但是達(dá)到hard硬限制的時(shí)候系統(tǒng)將拒絕或者異常了。
修改之后可能需要重啟shell生效。
3. 系統(tǒng)級(jí)別的句柄數(shù)限制修改。
sysctl -w fs.file-max 65536
或者
echo "65536" > /proc/sys/fs/file-max
兩者作用是相同的,前者改內(nèi)核參數(shù),后者直接作用于內(nèi)核參數(shù)在虛擬文件系統(tǒng)(procfs, psuedo file system)上對(duì)應(yīng)的文件而已。
可以用下面的命令查看新的限制
sysctl -a | grep fs.file-max
或者
cat /proc/sys/fs/file-max
修改內(nèi)核參數(shù)
/etc/sysctl.conf
echo "fs.file-max=65536" >> /etc/sysctl.conf
sysctl -p
查看系統(tǒng)總限制 命令:cat /proc/sys/fs/file-max
查看整個(gè)系統(tǒng)目前使用的文件句柄數(shù)量命令:cat /proc/sys/fs/file-nr
查看某個(gè)進(jìn)程開(kāi)了哪些句柄 :lsof -p pid
某個(gè)進(jìn)程開(kāi)了幾個(gè)句柄 :lsof -p pid |wc -l
也可以看到某個(gè)目錄 /文件被什么進(jìn)程占用了,顯示已打開(kāi)該目錄或文件的所有進(jìn)程信息 :lsof path/filename
轉(zhuǎn)載于:https://www.cnblogs.com/workharder/p/10372472.html
總結(jié)
以上是生活随笔為你收集整理的node.js Error: connect EMFILE 或者 getaddrinfo ENOTFOUND的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于PCL的ICP及其变种算法实现
- 下一篇: 测试金士顿固态硬盘软件,金士顿固态硬盘优