New Relic デーモンプロセス

PHP エージェントは2つの部品に分かれています。

  • PHP 拡張モジュール newrelic.so
  • エージェントデーモン newrelic-daemon

デーモンは、PHPエージェントと New Relic サーバー両方のプロキシとして動きます。これは、ネットワークのトラフィックを減らし、計測対象のアプリのレスポンスタイムを改善します。デーモンが動いていない場合は、データは New Relic へレポートされません。

目次

PHP デーモン

プロセスを監視すると、常に2つのデーモンプロセスが動いているとわかるでしょう。

$ ps -ef | grep newrelic-daemon
newrelic     1368     1  0 00:28 ?     00:00:00 /usr/bin/newrelic-daemon ...
newrelic     1370  1368  0 00:28 ?     00:00:00 /usr/bin/newrelic-daemon ...

1列目はプロセスオーナーです。2列目はプロセスID(PID)です。3列目は親プロセスのID(PPID)です。

最初のプロセスは、「watchdog」プロセスです。PID 1 が所有しています。これは、「worker」プロセスである2つ目のプロセスを監視しています。ワーカープロセスは、エージェントからの接続を受け付け、メトリックを収集し、New Relic のサーバーと通信します。

注: 実行中のプロセスが2つあるのは、完全に正常な動作です。

ワーカープロセスで致命的なエラーが発生し、予期せず終了した場合、watchdog プロセスは、すぐに新しいワーカープロセスを作成します。これにより、最低限のデーモンのダウンタイムになることを保証しています。
/etc/init.d/newrelic-daemon stop を実行して、正常にデーモンが終了する場合は、watchdog プロセスに終了シグナルを送信します。これにより、きちんとワーカープロセスを終了し、New Relic に保留中のデータを送信する機会を与えます。

注: 手動でデーモンを終了させたい場合は、ワーカーではなく、watchdog を終了する必要があります。

デーモンの Kill

デーモンを Kill する方法は、以下のとおりです。

  • /etc/init.d/newrelic-daemon stop を使う。これは、デーモンと対話するための望ましい方法です。
  • プロセスID を指定して、直接プロセスを Kill する。
    kill 1368
  • watchdog PID ファイルを使う
    kill `cat /var/run/newrelic-daemon.pid`

さらに詳しい情報

追加のドキュメントリソースは次のとおりです。