linux - Beanstalk/Node.Js/网络问题

标签 linux node.js amazon-web-services network-programming

我们在 Elastic Beanstalk 上运行 Node API 应用程序,并在数据库中使用 Dynamo,在 Elastic Cache 中使用 Redis。我正在加载测试,通过运行针对 Node API 的请求调用循环,模拟大约 20,000 个同时进行调用的用户。

它运行了一段时间。总调用量超过 30,000 次。然后我开始无法连接到 dynamo 和 redis。我得到以下信息:

“无法访问的主机:dynamodb.us-west-2.amazonaws.com'。此服务可能在 us-west-2' 地区不可用。\”,\“code\":\"UnknownEndpoint\",\"stack\":\"UnknownEndpoint: 不可访问的主机:`dynamodb.us-west-2.amazonaws.com'。"

“与 xxxxxx-lt-001.19atpm.0001.usw2.cache.amazonaws.com:6379 的 Redis 连接失败 - getaddrinfo ENOTFOUND”

但那时它已经运行得很愉快了很长一段时间。

我看到应用服务器上有大约 20,000/30,000 个连接。到那时为止,我看到我的调用的响应时间不到 200 毫秒,并且突然间它们的长度跳跃,变得越来越长。我已将应用服务器上的打开文件数增加到 100,000, Node 的最大连接数增加到 50,000。

应用服务器是 C4.xlarge。 CPU 未达到 30%。 Dynamo 和 Redis 都没有接近它们的极限,甚至还远未达到极限。网络输出峰值为 40,000,000,网络输入峰值为 100,000,000。

我现在完全被难住了。有什么建议吗?

/etc/security/limits.conf 文件:

  • 软文件 100000
  • 硬文件 100000

ulimit -a 的结果

核心文件大小( block ,-c)0 数据段大小(千字节,-d)无限制 调度优先级 (-e) 0 文件大小( block ,-f)无限制 挂起信号 (-i) 59742 最大锁定内存(千字节,-l)64 最大内存大小(千字节,-m)无限制 打开文件 (-n) 100000 管道大小(512 字节,-p)8 POSIX 消息队列(字节,-q)819200 实时优先级 (-r) 0 堆栈大小(千字节,-s)8192 CPU 时间(秒,-t)无限制 最大用户进程 (-u) 59742 虚拟内存(千字节,-v)无限制 文件锁 (-x) 无限制

更多信息 - 我在消息日志中发现了一些关于“nf_conntrack:表已满,丢弃数据包”的错误。所以我按照以下网页中的建议增加了表格的大小。这让我更进一步,多达 45,000 个左右的电话。然后它真的从 table 上掉下来了。从亚秒级响应时间立即变为 25 秒响应时间。

http://www.mwclearning.com/?p=1506

最佳答案

在这种情况下,几个较小的盒子似乎会在导致网络爆炸之前用完它们的 CPU。 c4.xlarge 没有。部分原因可能是 Node 集群在 Node 的 v 12 之前的版本中工作的方式不佳,其中循环没有平等地使用所有 CPU。

关于linux - Beanstalk/Node.Js/网络问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28974682/

相关文章:

c - 在 linux 中用 c 代替 getch 和 clrscr()

c++ - 编译 qt Creator/qt widget 示例时出错

javascript - 使用 AJAX 从客户端( Angular )获取数据到 Node.js

amazon-web-services - 在 cloudwatch 事件规则 cloudformation 中动态附加事件名称

android - 亚马逊实时应用程序测试购买: Can testers use a build downloaded from Amazon Underground to test purchases?

linux - 特定服务器上的 WordPress 500 错误

Python文件路径和大小

amazon-web-services - SQS 的 AWS put-bucket-notification-configuration 抛出 "Unable to validate the following destination configurations"

javascript - process.env.NODE_ENV 在配置和策略中有两个不同的值

javascript - @angular/cli 4 不会安装在 debian 上