Azure App ServiceでNode.jsアプリケーションを簡単にマルチプロセスで動かす方法

Node.jsアプリケーションをマルチプロセスで動かすには、子プロセスをスポーンする実装が必要です。

Azure App Serviceではnode.exeのプロセスを簡単に管理する仕組みがあり、この仕組を活用することで、手軽に既存アプリケーションの実行プロセス数を増やすことが可能です。

Azure App ServiceでNode.jsアプリケーションを簡単にマルチプロセスで動かす方法

以下の内容をwwwrootに配置すると、起動時に設定したプロセス数が起動されます。

nodeProcessCountPerApplication:[プロセス数]

以下のようにiisnode.ymlでは色々とカスタマイズが可能なので、必要に応じてチューニングすると良いでしょう。

# The optional iisnode.yml file provides overrides of 
# the iisnode configuration settings specified in web.config.

node_env: production
nodeProcessCommandLine: "c:program filesnodejsnode.exe"
nodeProcessCountPerApplication: 1
maxConcurrentRequestsPerProcess: 1024
maxNamedPipeConnectionRetry: 100
namedPipeConnectionRetryDelay: 250
maxNamedPipeConnectionPoolSize: 512
maxNamedPipePooledConnectionAge: 30000
asyncCompletionThreadCount: 0
initialRequestBufferSize: 4096
maxRequestBufferSize: 65536
watchedFiles: *.js;iisnode.yml
uncFileChangesPollingInterval: 5000
gracefulShutdownTimeout: 60000
loggingEnabled: true
logDirectoryName: iisnode
debuggingEnabled: true
debuggerPortRange: 5058-6058
debuggerPathSegment: debug
maxLogFileSizeInKB: 128
maxTotalLogFileSizeInKB: 1024
maxLogFiles: 20
devErrorsEnabled: true
flushResponse: false
enableXFF: false
promoteServerVars:

引用:Hosting node.js applications in IIS on Windowsより

以下は実際にiisnode.ymlを作成し、nodeProcessCountPerApplication: 2に変更した場合のプロセス数の変化のスクリーンショットになります。

  1. プロセスの実行状況を確認するために、Kuduを表示する。
    Kudo
  2. Kuduを表示したら[Process explorer]をクリックする。
    Process explorer 1
  3. 設定をしていないと、1プロセスしか起動していないことを確認する
    Process explorer 2
  4. Visual Studio Online “Monaco”, またはGit pushでiisnode.ymlファイルを作成し、nodeProcessCountPerApplication: 2にする。
    iisnode.yml
  5. サイトをAzure プレビューポータルから再起動し、サイトにアクセス後、Kuduの[Process explorer]を確認すると以下のようにnode.exeのプロセス数が2個起動している。
    Process explorer 3

これ以外にもAzure上でNode.jsアプリケーションを動かすメリットがあり、詳細は以下のサイトに記載されているので参考にしてください。

参考