导致 AWS 服务器无响应的一个问题(Nodejs相关)
导致 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 命令可以运行一部分,但装一会就卡死了
各位大佬有没有想法,这个问题卡了好久了
会不会是编译的时候内存满了,然后也没有设 SWAP ?
开 ssh ,让我上去看看
top 看是不是 thrashing 了
???
直接卡死,啥也干不了,ssh 没反应,只能重启,想看 top 也没法看,最奇怪的是控制台 monitor 没异常,CPU 占用最高也才 11%
你的 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相关)无响应的问题,可能涉及多个方面,以下是一些可能的原因及解决方案:
原因分析
-
网络问题:
- 确保网络连接正常,无防火墙或网络代理阻止与AWS的连接。
-
身份验证问题:
- 确保提供了有效的AWS访问密钥和密钥对,并且未过期。
-
代码逻辑问题:
- 在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服务器无响应的问题。