我运行了一个node.Js客户端,它向我的服务器发送了大量的请求(也写在node.Js中)。
服务器获取特定文件的请求,并将其上传到S3。
两分钟后,我得到以下错误,一切顺利:
{ [NetworkingError: getaddrinfo ENOTFOUND] message: 'getaddrinfo ENOTFOUND',code: 'NetworkingError',errno: 'ENOTFOUND',syscall: 'getaddrinfo',region: 'us-east-1',hostname: 'XXXX.s3.amazonaws.com',retryable: true,time: Sun Oct 12 2014 11:27:54 GMT-0400 (EDT),_willRetry: false }
在我做了一个小小的调查之后,我发现这很可能是因为我试图打开太多的文件句柄或套接字,而这些句柄真的只能在一段时间后才会发生。
从amazom s3桶中检索静态文件
云端由Nginx(代理S3)支持,随机丢失已经caching的项目?
自动化linux EBS快照备份和清理
如何使用Elastic Beanstalk和Dockerrun.aws.Json正确地部署到AWS?
CORS问题请求的资源上没有“Access-Control-Allow-Origin”标题
但据我所知,node.Js应该封装这个问题给我。 换句话说,node.Js应该理解文件描述符的限制,并根据这个限制打开一个新的文件描述符。 这是根据事件使用一个用户线程的优点(我错了哪里?)
如果node.Js没有这样做,这个错误的最佳解决scheme是什么,这不是增加我的打开的文件限制(这是一个坏主意,因为我们需要在这台机器上的良好性能。我确定如果我增加这个数字,这个错误就不会再出现了,我怎么知道这个应用程序的OS号?
好的分布式通用文件系统在我的情况?
自动检测文件更改并通过S3进行同步
如何为s3桶指定一个子域?
了解服务器体系结构:使用Nginx反向代理或Apache服务器从AWS S3提供内容
Nginx代理Amazon S3资源
Ubuntu中默认的打开文件描述符是1024。 您可以使用从终端设置ulimit -n
ulimit -n #a number
但是这只会对当前登录会话进行更改。 使这些更改永久使用这些命令。
ulimit -n #see the number of open files sudo vi /etc/security/limits.conf #open the file in vi
现在设置两个:
用户软nofile 9000
用户硬nofile 65000
根软nofile 9000
根硬nofile 65000
sudo vi /etc/pam.d/common-session
现在添加这一行:
会话需要pam_limits.so
http://posIDev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/
编辑:
关于如何克服这个问题而不搞乱ulimits,那么你将不得不限制被请求的总数小于你当前的ulimit -n。
通过创建一个http长寿命连接池并开始通过它们推送请求,或者限制从您的应用程序触发的最大并发请求,并且超出此限制的任何请求将其添加到队列中,以便稍后处理它们。
这只是一个概念,如果你想要更多的帮助这个问题,向我们展示一些代码,所以我们可以想象你正在尝试做什么。
希望这有助于。
总结以上是内存溢出为你收集整理的Node.js和打开文件限制在Linux中全部内容,希望文章能够帮你解决Node.js和打开文件限制在Linux中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)