問題
エージェントをアップグレードすると、デーモンのログファイルに次のようなエラーが表示されます。protocol mismatch:A.B != X.Y
.
解決策
エージェントとデーモンのバージョンが同じであることを確認してください。
ウェブサーバーを再起動します(Apache、Nginx、PHP-FPMなど)。
A.B
の数がX.Y
の数よりも少ない場合は、古いエージェントが最新のデーモンと通信しようとしていることを意味します。A.B
の数字がX.Y
の数字よりも大きい場合は、デーモンが古くなっていることを意味し、最も可能性の高い原因は、デーモンの実行数が多すぎることです。この場合、現在実行中のnewrelic-daemon
プロセスをすべて kill し、/etc/init.d/newrelic-daemon start
でデーモンを再起動してください。
原因
このエラーが発生する唯一の理由は、エージェントとデーモンがお互いに同期していないことです。デーモンと実際のエージェント (PHP 拡張モジュール) は非常に緊密に結合しており、 デーモンはそれにマッチしたエージェントからの接続やコマンドしか受け付けません。
アップグレードの際に、古いデーモンを正しく殺すことができず、古いデーモンのプロセスがまだ動いていることがあります。よくあるのは、アップグレード後にWebサーバーを再起動しなかったことがこのエラーの原因です。デーモンが正しくアップグレードされたにもかかわらず、ウェブサーバーに古いエージェントが残っていると、このエラーが表示されます。このエラー自体が、どのエージェントが古くなったかを示しています。