前端大讲堂让前端飞Web前端之路

记一个 Node 并发数太多出错问题的排查

2019-05-27  本文已影响2人  前端大课堂

今天有人问我一个问题,做离线爬虫服务,一次性发出 10000 以上的请求去拉取数据,会返回很多失败。

这是为什么? 

于是写个两段代码实践了下。 

其中一段代码就是起一个服务提供一个接口,同时记录下 libuv I/O 的 activeHandles 和 activeRequests. 

activeHandles 是指事件循环队列中未处理的任务数,

activeRequests 是指未处理的请求数。 

server.js

 另一段代码如下,

sendRequest.js

果然报很多错误,

上网查下 EMFILE 错误,是因为打开了太多文件描述符,文件描述符包括磁盘文件,命名管道,网络套接字和由所有进程打开的设备。

解决方法一方面是将系统文件描述符的上限扩大,另一方面是限制并发数。 

参考资料: 

https://stackoverflow.com/questions/19981065/nodejs-error-emfile-too-many-open-files-on-mac-os

https://superuser.com/questions/433746/is-there-a-fix-for-the-too-many-open-files-in-system-error-on-os-x-10-7-1

http://landcareweb.com/questions/7995/node-jszhong-de-lian-jie-emfile-cuo-wu

https://codeday.me/bug/20170919/75603.html

https://blog.csdn.net/sdn_prc/article/details/28661661

上一篇 下一篇

猜你喜欢

热点阅读