PhpAmqpLib : Uncaught exception 'ErrorException' with message 'fwrite(): send of 19 bytes failed with errno=104 Connection reset by peer'

标签 php symfony debian rabbitmq

我的 RabbitMQ 消费者在处理一些消息后崩溃并出现以下错误:

/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

当前队列有大约 30k 条消息,但我将所有消息移至一个新队列并使用空队列重试,但错误仍然存​​在。

我有足够的空闲内存(180GB 空闲内存)

消费者在处理完一些消息后崩溃,一般需要30s才会崩溃。

这个队列只有一个消费者。

RabbitMQ 配置是默认配置。

我正在使用 Symfony2、mongodb 和 Debian Jessie。

另一个线索,它总是在 27 或 28 秒后崩溃。

有什么想法吗?

谢谢。

最佳答案

如果您有权访问它,最好的方法是查看 rabbitmq 服务器日志中的内容。

除了从脚本执行时间达到 30 秒时平均发生的事实判断之外,我想建议您控制客户端的消息量,因为它看起来会阻塞来自你的经纪人。

就 phpamqplib 而言,尝试在声明队列后立即执行以下操作:

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

看看它是否有效。如果不是,我认为网络设置/环境是问题所在。

关于PhpAmqpLib : Uncaught exception 'ErrorException' with message 'fwrite(): send of 19 bytes failed with errno=104 Connection reset by peer' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174410/

相关文章:

javascript - 使用 Symfony/PHP7 的 Handlebars / mustache

ajax - Symfony 3、 "ajax request"带获取 API 和 CSRF

linux - 对Linux感到困惑

ruby-on-rails - Gem::Installer::ExtensionBuildError:错误:无法构建 gem native 扩展。 - 在 Debian 7 上安装 Redmine

php - 如何访问 require.js 异步加载的 Javascript 中的 URL 参数?

javascript - Laravel 使用 JavaScript 重定向

php - sql查询不会发送到数据库php

php - 在sql数据库中按年份选择

Symfony2 1 :M/1:1 Relationship and Sonata Admin Form

linux - Apache2 站点可用配置