【问题标题】:Azure App Service - Detect ShutdownAzure 应用服务 - 检测关机
【发布时间】:2016-05-02 12:40:05
【问题描述】:

我有一个 Node.js 应用作为 Microsoft Azure 上的应用服务托管。它会定期关闭。我试图了解这种情况何时发生。为了做到这一点,我正在给自己发送一封关于某些事件的电子邮件。

目前,当应用启动时,我会向自己发送一封电子邮件。然后,我尝试在应用服务停止时发送电子邮件。我正在尝试使用以下代码:

const app = require('./app');
const port = 1337;
const server = app.listen(port);

// Respond to the server starting.
server.on('listening', function() {
  sendEmail('App Service - Listening', 'Web site server listening');
});

server.on('close', function() {
  sendEmail('App Service - Closed', 'Web site server closed.');  
});

process.on ('SIGTERM', function() {
  sendEmail('App Service - Exited', 'Process exited (via SIGTERM)');
}); 

process.on ('SIGINT', function() {
  sendEmail('App Service - Exited', 'Process exited (via SIGINT)');
}); 

process.on('exit', function() {
  sendEmail('App Service - Exited', 'Process exited');
}); 

请假设sendEmail 函数存在并且有效。如前所述,当应用程序正在收听时,我成功地收到了一封电子邮件。但是,当应用进入睡眠状态/停止收听时,我从来没有收到过。

我错过了什么吗?

【问题讨论】:

  • 可能是未处理的异常?
  • 是否有一个事件我可以在应用程序/服务器级别捕获它?如果有,它叫什么?
  • 您是否成功检测到 Windows 应用服务关闭?

标签: node.js azure


【解决方案1】:

如果您的 post code 托管在 Azure Web Apps 上,您需要将 port 修改为 process.env.port 以使您的 node.js 应用程序在 Azure 上运行。

由于 Azure Web 应用程序使用 IIS 来处理映射脚本,并使用管道端口来转换 http 请求。而 Azure Web Apps 只公开 80 和 443 端口。

同时,您可以将 prot 修改为 process.env.port||1337 以使其同时运行 Azure 和本地。

更新

始终开启。默认情况下,如果 Web 应用程序空闲一段时间,则会卸载它们。这使系统可以节省资源。在基本或标准模式下,您可以启用 始终开启 以始终保持应用加载。如果您的应用运行连续的网络作业,您应该启用始终开启,否则网络作业可能无法可靠地运行。

您可以在 Azure 门户上配置此设置:

更多信息请参考https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/。

【讨论】:

  • 我做到了。但是,当应用进入睡眠状态时,我仍然没有收到电子邮件。
  • 您有任何错误吗?您在应用程序中使用了哪些邮件服务?
  • 没有。我只是从旧的雅虎电子邮件帐户通过nodemailer 发送电子邮件。再一次,它在启动期间工作。就在应用程序进入睡眠状态或在 Azure 上执行任何操作时,电子邮件不会发出。
  • always on 设置是什么?这是 Azure 设置还是节点设置?我以前从未听说过它
【解决方案2】:

这可能是一个未捕获的异常,试试这个来捕获它们:

   process.on('uncaughtException', function(err) {
      console.log(err);
   });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多