2016-05-11 1 views
3

マイRabbitMQの消費者は、次のエラーでいくつかのメッセージを処理した後にクラッシュさ:PhpAmqpLib:メッセージでキャッチされない例外「ErrorException」「fwriteの():19バイトの送信ピアからのerrno = 104接続のリセットで失敗」

/usr/bin/php /var/www/mydomain/integration.mydomain.com/current/app/console rabbitmq:consumer -w segment --env=prod

[PhpAmqpLib\Exception\AMQPRuntimeException]
Invalid frame type 65

rabbitmq:consumer [-m|--messages [MESSAGES]] [-r|--route [ROUTE]] [-l|--memory-limit [MEMORY-LIMIT]] [-d|--debug] [-w|--without-signals] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-s|--shell] [--process-isolation] [-e|--env ENV] [--no-debug] [--]

PHP Fatal error: Uncaught exception 'ErrorException' with message 'fwrite(): send of 19 bytes failed with errno=104 Connection reset by peer' in /var/www/mydomain/integration.mydomain.com/shared/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php:281 Stack trace: 0 [internal function]: PhpAmqpLib\Wire\IO\StreamIO->error_handler(8, 'fwrite(): send ...', '/var/www/tracti...', 281, Array) 1 /var/www/mydomain/integration.mydomain.com/shared/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php(281): fwrite(Resource id #809, '\x01\x00\x01\x00\x00\x00\v\x00\x14\x00(\x00\x00\x00\x00...', 8192) 2 /var/www/mydomain/integration.mydomain.com/shared/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(327): PhpAmqpLib\Wire\IO\StreamIO->write('\x01\x00\x01\x00\x00\x00\v\x00\x14\x00(\x00\x00\x00\x00...') 3 /var/www/mydomain/integration.mydomain.com/shared/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(448): PhpAmqpLib\Connect in /var/www/mydomain/integration.mydomain.com/shared/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php on line 281

現在のキューには約30,000個のメッセージがありますが、すべてのメッセージを新しいキューに移動して、空のキューを使用して再試行してもエラーは残ります。

は、私は十分な空きメモリ(180ギガバイト空きRAMメモリ)いくつかのメッセージを処理した後、それは通常、クラッシュする前に30代を取る

消費者のクラッシュを持っています。

このキューのコンシューマは1つだけです。

デフォルトはRabbitMQです。

私はSymfony2とmongodbとDebian Jessieを使用しています。

別のヒントは、27秒または28秒後に常にクラッシュします。

それに関するご意見はありますか?

ありがとうございました。

+0

どのような解決策ですか?私もこの問題を経験しており、他もそうです。 https://github.com/php-amqplib/php-amqplib/issues/398 – Gravy

+0

ヒットビートに関連している可能性があります。https://github.com/php-amqplib/php-amqplib/issues/437 – Wrikken

答えて

2

あなたがアクセスできる場合、rabbitmqサーバのログに何が入っているかを確認するのが最善の方法です。

それ以外のことは、スクリプトが30秒の実行時間に達したときに平均して起こると判断したこと以外は、クライアントのメッセージ数を制御することをお勧めしますあなたのブローカーから。

$channel->basic_qos(null, 10, null); 

、それが動作するかどうかを確認:phpamqplibの面では

はあなたのキューを宣言した後、以下の権利をしよう。それは私はネットワークの設定/環境が問題だとは思わない場合。

+0

このオプションを試しました。それは問題を解決しませんが、30秒前に10のメッセージに達するため、クラッシュすることはありません。あなたが言ったようにネットワーク設定のように見えますが、どこに見つけることはできません。ありがとう。 – Bart

関連する問題