プロトコルミスマッチのエラー

問題

エージェントをアップグレードした後、デーモンのログファイルに protocol mismatch: A.B != X.Y のようなエラーがあった。

対策

  1. お使いのエージェントとデーモンは、両方共、同じ最新バージョン番号であることを確認してください。
  2. Webサーバーを再起動します。
  3. 番号 A.B が番号 X.Y よりも低い場合は、よりデーモンと通信しようとするエージェントがデーモンより古いことを意味します。

    番号 A.B が番号 X.Yよりも大きい場合、デーモンが古くなっているいることを意味します。最も可能性の高い原因は、実行中のデーモンが多すぎるということです。その場合は、現在動いている newrelic-daemon プロセスを全部 Kill してください。そして、/etc/init.d/newrelic-daemon start を使って、デーモンを再起動してください。

原因

このエラーが発生するのは、エージェントとデーモンは相互に同期が取れていないときだけです。デーモンと実際のエージェント(PHP拡張)は、とても密接に結びついたペアであり、デーモンはバージョンが一致したエージェントからの接続とコマンドのみを受け付けます。

時々、アップグレードプロセスが古いデーモンを正常に殺すことに失敗します。そのため、実行中の古いデーモンプロセスが残っていることがあります。多くの場合、このエラーはアップグレード後に Web サーバーを再起動していないことが原因で発生します。デーモンが正しくアップグレードされたにも関わらず、Web​​サーバーに古いエージェントが含まれている場合は、このエラーが表示されます。エラーは、古いプロセスから発生しています。