2016-05-02 17 views
0

私は、Microsoft Azure上でAppサービスとしてホストされているNode.jsアプリケーションを持っています。定期的にシャットダウンします。これがいつ発生するのか理解しようとしています。これを試みるにあたって、私は特定の出来事について電子メールを送っています。Azure Appサービス - シャットダウンの検出

現在、アプリの起動時に自分宛にメールを送信しています。次に、アプリサービスが停止するとメールを送信しようとします。私は、次のコードを使用して、これをしようとしています:

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機能が存在して働くと仮定してください。前述のとおり、アプリがリッスンしているときにメールを受信して​​います。しかし、アプリがスリープ状態になるか、リスニングを停止するときに、私は決して受け取ることはありません。

何か不足していますか?

+0

処理されていない可能性があります例外? – opHASnoNAME

+0

アプリ/サーバーレベルでそれを捕まえることができるイベントはありますか?もしそうなら、それは何と呼ばれていますか? –

答えて

0

をあなたのポストコードがAzureのWebアプリケーションでホストされている場合、あなたはあなたのNode.jsを作るためにあなたのportprocess.env.portにを変更する必要がありますAzureで実行されるアプリケーション。

Azure Web Appsは、IISを使用してマッピングスクリプトを処理し、パイプポートを使用してHTTP要求を変換します。そして、Azure Web Appsは、80と443のポートを公開するだけです。

一方、protprocess.env.port||1337に変更して、Azureとローカルの両方で動作させることができます。常にオン

更新

。デフォルトでは、Webアプリケーションは一定期間アイドル状態になっているとアンロードされます。これにより、システムはリソースを節約できます。基本モードまたは標準モードでは、常にを有効にして、アプリを常に読み込み状態にすることができます。常にオンアプリが連続したWebジョブを実行している場合は、Always Onを有効にするか、Webジョブが確実に実行されないことがあります。あなたはAzureのポータル上でこの設定を設定できるの

enter image description here

は多くのためhttps://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/を参照してください。

+0

私はそれをしました。しかし、私はまだアプリがスリープ状態になるときに電子メールを取得していません。 –

+0

エラーが生じますか?アプリケーションで利用するメールサービスは何ですか? –

+0

いいえ、古いYahooメールアカウントから 'nodemailer'経由でメールを送信しています。再び、起動時に動作します。アプリがスリープ状態になったり、Azureで何が起きたとしても、メールは送信されません。 –

0

それはそれらをキャッチするためにこれを試してみてください、キャッチされない例外が考えられます。

process.on('uncaughtException', function(err) { 
     console.log(err); 
    }); 
関連する問題