首页 文章

PhpAmqpLib:未捕获的异常'ErrorException',带有消息'fwrite(): send of 19 bytes failed with errno=104 Connection reset by peer'

提问于
浏览
3

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

/ usr / bin / php /var/www/mydomain/integration.mydomain.com/current/app/console rabbitmq:consumer -w segment --env = prod [PhpAmqpLib \ Exception \ AMQPRuntimeException]无效的帧类型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错误:带有消息'fwrite()的未捕获异常'ErrorException':在/var/www/mydomain/integration.mydomain.com/shared/vendor/php-amqplib/中,发送19个字节失败,错误为errno = 104连接重置为peer php-amqplib / PhpAmqpLib / Wire / IO / StreamIO.php:281堆栈跟踪:0 [内部函数]: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/Stre amIO.php(281):fwrite(资源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/第281行的PhpAmqpLib / Wire / IO / StreamIO.php

当前队列有大约30k条消息,但我将所有消息移动到新消息并再次尝试使用空队列并且错误仍然存在 .

我有足够的可用内存(180GB免费内存)

消费者在处理一些消息后崩溃,通常需要30秒才能崩溃 .

此队列只有一个使用者 .

RabbitMQ配置是默认配置 .

我正在使用Symfony2和mongodb以及Debian Jessie .

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

有什么想法吗?

谢谢 .

1 回答

  • 2

    最好的方法是看看rabbitmq服务器的日志中有什么内容,如果你有权访问它 .

    除了这个事实,当它平均发生在脚本达到30秒的执行时间时,我想建议你控制你的客户端的消息量,因为它看起来像是来自你的经纪人的消息数量 .

    在phpamqplib方面,尝试在声明队列后立即执行以下操作:

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

    看看它是否有效如果不是,我相信网络设置/环境是问题 .

相关问题