部署后aws linux服务器崩溃

问题描述

到目前为止,我已经运行我的 reactJS 网站大约一年,并且每次进行部署后(在执行完以下操作后),服务器崩溃都发生了(这发生在最近3个月内)部署可以正常运行,但是)&第二天早上,当我尝试登录到我的网站时,我无法访问它,并且我必须重新启动我的 PM2 服务器,以使其再次运行。但是从上周开始,我的整个 AWS 实例崩溃了,我找不到原因,从上周开始,这两次发生在我身上。然后我必须去AWS Web并重新启动服务器(在我开始使用控制台之前,但是从现在开始我无法通过控制台访问它,必须去AWS Web并重新启动它)。

当第一次服务器崩溃时,我也得到了我的MysqL服务器关闭了连接,因为我是从日志中获取的:

db error Error: Connection lost: The server closed the connection. at Protocol.end (/home/ubuntu/Ciao_ERP/node_modules/MysqL/lib/protocol/Protocol.js:112:13) at Socket.<anonymous> (/home/ubuntu/Ciao_ERP/node_modules/MysqL/lib/Connection.js:94:28) at Socket.<anonymous> (/home/ubuntu/Ciao_ERP/node_modules/MysqL/lib/Connection.js:526:10) at Socket.emit (events.js:215:7) at Socket.EventEmitter.emit (domain.js:475:20) at endReadableNT (_stream_readable.js:1184:12) at processticksAndRejections (internal/process/task_queues.js:80:21) { fatal: true,code: 'PROTOCOL_CONNECTION_LOST' }

然后我使用了此解决方案:stackoverflow answer for handling 'PROTOCOL_CONNECTION_LOST'

然后我处理了该问题,但仍然出现连接丢失。

无论如何,我会附加连接处理和服务器代码段,以检查是否做错了什么!

SERVER.js

const express = require("express");

const cors = require("cors");

const { DBConnect } = require("./connection");

DBConnect();

const path = require("path");

const app = express();

app.use(express.json({ limit: "50mb",extended: true }));
app.use(
    express.urlencoded({ limit: "50mb",extended: true,parameterLimit: 50000 })
);

app.use(cors());

app.use("/api/users",require("./routes/api/users"));
app.use("/api/invoiceSetting",require("./routes/api/InvoiceSetting"));
app.use("/api/auth",require("./routes/api/auth"));
app.use("/api/appSetting",require("./routes/api/AppSetting"));
app.use("/api/StakeHolder",require("./routes/api/StakeHolderSetting"));
app.use("/api/warehouse",require("./routes/api/WarehouseSetting"));
app.use("/api/production",require("./routes/api/ProductionSetting"));
app.use("/api/purchasing",require("./routes/api/Purchasing"));
app.use("/api/purchasingTemp",require("./routes/api/PurchasingTemp"));

//serve static assets if in production

app.use(express.static(path.join(__dirname,"../..","build")));


const port = process.env.PORTADDRESS || 5000;

app.listen(port,() => console.log(`listening on http://localhost:${port}`)).on(
    "error",(err) => {
        console.log(`catched error on listen & error is   ${err}\n`);
       
    }
);

这是我的数据库连接处理代码

const MysqL = require("MysqL");
require("dotenv").config();

let portDB = process.env.PORT_DB;
console.log("PORT ENV VARIABLE:",portDB);
if (portDB === undefined) {
    process.exit();
}

var db_config = {
    host: process.env.HOST_NAME,user: process.env.USER_NAME,password: process.env.PASSWORD,database: process.env.DATABASE,multipleStatements: true,port: portDB,};

let db = MysqL.createConnection(db_config);

const handledisconnect = () => {
    db = MysqL.createConnection(db_config);
    db.connect((err) => {
        // The server is either down
        if (err) {
            // or restarting (takes a while sometimes).
            console.log("error when connecting to db:",err);
            console.log("& restarting");
            setTimeout(handledisconnect,2000); // We introduce a delay before attempting to reconnect,} // to avoid a hot loop,and to allow our node script to
        else {
            console.log("Connected MysqL DB!");
        }
    }); // process asynchronous requests in the meantime.
    // If you're also serving http,display a 503 error.
    db.on("error",(err) => {
        console.log("db error",err);
        if (err.code === "PROTOCOL_CONNECTION_LOST") {
            console.log(`err.code : PROTOCOL_CONNECTION_LOST appeard\n`);
            // Connection to the MysqL server is usually
            handledisconnect(); // lost due to either server restart,or a
        } else {
            // connnection idle timeout (the wait_timeout
            console.log(`db.on("error") else called & err : ${err}\n`);
            throw err; // server variable configures this)
        }
    });
};



module.exports = {
    db: db,//this db is used to handling MysqL queries 
    DBConnect: handledisconnect,//this is used to start the db 
};


如果能帮助我解决此服务器崩溃问题或我现在面临的整个AWS实例崩溃问题,我会很高兴:(

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)