导致 AWS 服务器无响应的一个问题(Nodejs相关)

发布于 1周前 作者 eggper 来自 nodejs/Nestjs

导致 AWS 服务器无响应的一个问题(Nodejs相关)

用的 AWS EC2,一直有一个没有排查出来的问题,目前在服务器上 100%触发,我怀疑是 AWS 的问题. 一运行 npm 部分相关的程序, 会导致服务器负载大幅上升,其他线程的响应时间延迟近百倍(所以我猜是 CPU 跑满了),并且不响应 ctrl+c,但是 AWS monitor 里 CPU 监控才跑到 3%,Network 占用也正常 无法退出进程,broken pipe 之后 ssh 也不响应,控制台上也无法连接到服务器,唯一的办法是在控制台上重启服务器。 运行的命令有: npm list | grep react-scripts npm install 其中 install 命令可以运行一部分,但装一会就卡死了 各位大佬有没有想法,这个问题卡了好久了


21 回复

会不会是编译的时候内存满了,然后也没有设 SWAP ?


开 ssh ,让我上去看看

top 看是不是 thrashing 了

直接卡死,啥也干不了,ssh 没反应,只能重启,想看 top 也没法看,最奇怪的是控制台 monitor 没异常,CPU 占用最高也才 11%

我也怀疑是这个问题,但一个 npm list 命令不至于把内存跑满

你的 EC2 实例是不是 T 系列的,然后 CPU 积分还用完了?

可能是 io ,我之前用亚麻籽的免费🐔是真的烂

给我 Root 密码,让我上去看看

服务器卡死,更多时候碰到的是 io 问题。楼主往 io 这块查查,顺便看看各个区的剩余空间。

是 t2.micro, cpu 积分是啥我不太清楚

amazon 感觉整的好复杂,之前用国内的阿里云就啥问题没有,amazon 恢复个镜像都找了半天

想问一下大佬,IO 咋查,不是很熟 amazon

网页控制台里面可以看实例的 CPU 积分用量和余量,也可以看 IOPS

CPU 积分用完了之后,如果实例没有开无限量模式,实例的 CPU 会被降低到基线水平

#11 和阿里云突发性能实例差不多,不能长期 cpu 满载

t 系列机型就是这样,cpu 不是完整算力,用的少时候积累积分,用的多时候扣除积分,没积分了就强制降速

机型升级到 C5 就解决了,结帖

唉,我明天试一下,说不定真的就解决了,从 micro 换个 small 试试

或者开启无限量模式,让 CPU 可以继续突发性能,按时间收费

关于AWS服务器(Node.js相关)无响应的问题,可能涉及多个方面,以下是一些可能的原因及解决方案:

原因分析

  1. 网络问题

    • 确保网络连接正常,无防火墙或网络代理阻止与AWS的连接。
  2. 身份验证问题

    • 确保提供了有效的AWS访问密钥和密钥对,并且未过期。
  3. 代码逻辑问题

    • 在Node.js中,如果使用了异步HTTP请求,且未正确处理异步逻辑,可能导致服务器无响应。

示例代码及解决方案

const AWS = require('aws-sdk');
const http = require('http');

AWS.config.update({ region: 'your-region' });

const server = http.createServer((req, res) => {
  const params = { /* your AWS API call parameters */ };

  // Ensure to handle the AWS API call asynchronously
  AWS.yourService.yourMethod(params, (err, data) => {
    if (err) {
      console.error(err);
      res.status(500).send('Internal Server Error');
    } else {
      res.json(data);
    }
  });
});

server.listen(3000, () => {
  console.log('Server is running on port 3000');
});

注意事项

  • 确保AWS SDK版本与API版本兼容。
  • 检查代码中的异步逻辑是否正确处理。
  • 在AWS Lambda中,注意超时设置和VPC配置,确保Lambda函数有正确的网络访问权限。

希望这些信息能帮助你解决AWS服务器无响应的问题。

回到顶部