AWS部署Gatsby遇段错误及服务器意外停机问题求助
解决Gatsby在AWS部署时的段错误(Segmentation Fault)及服务器宕机问题
以下是针对你遇到的「segmentation fault (core dumped) exit code 139」错误及服务器意外停机问题的排查和解决步骤:
检查Node.js版本兼容性
Gatsby对Node.js版本有严格要求,部分版本的Gatsby与Node.js 18+或过旧版本存在兼容性冲突。先查看项目package.json中的engines字段确认版本要求,再在AWS服务器上切换对应版本(推荐用nvm管理):nvm install 16 # 替换为项目要求的具体版本 nvm use 16 pm2 restart gatsby排查服务器资源不足问题
小规格AWS实例(如t2.micro)内存有限,Gatsby运行时内存占用过高会触发段错误并导致宕机。先查看当前内存使用情况:free -h解决方法:
- 给PM2进程设置内存上限,超过阈值自动重启:
pm2 start gatsby --name "gatsby" --max-memory-restart 500M -- start - 升级AWS服务器实例规格,比如从t2.micro升级到t2.small或更高配置。
- 给PM2进程设置内存上限,超过阈值自动重启:
禁用PM2集群模式
Gatsby与PM2集群模式可能存在兼容性冲突,改用单实例启动:pm2 delete gatsby pm2 start gatsby --name "gatsby" -- start清理缓存与重新安装依赖
缓存或损坏的依赖可能引发底层错误,执行以下操作重置项目:rm -rf node_modules .cache public npm install gatsby clean gatsby build # 生产环境需先构建再启动服务 pm2 restart gatsby补充系统底层依赖库
段错误可能源于系统缺少必要的底层库,针对不同AWS系统执行:- Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y sudo apt install build-essential libssl-dev - Amazon Linux:
sudo yum update -y sudo yum install gcc-c++ openssl-devel
- Ubuntu/Debian:
启用核心转储定位深层问题(可选)
如果以上方法未解决,可开启核心转储调试具体错误:ulimit -c unlimited # 临时开启核心转储功能 pm2 restart gatsby错误发生后会生成
core文件,用gdb查看调用堆栈信息定位问题模块:gdb $(which node) core (gdb) bt # 打印调用堆栈
内容的提问来源于stack exchange,提问作者Shubham Belwal
相关产品推荐
相关产品推荐

