Node.js和打开文件限制在Linux中

Node.js和打开文件限制在Linux中,第1张

概述Node.js和打开文件限制在Linux中

我运行了一个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中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1276964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存