Я настраиваю сервер трекера, который будет использовать rabbitmq вместо того, чтобы выполнять работу немедленно. Кажется, все работает нормально, пока к серверу кроликов не поступило больше запросов - я получаю
<!-- language: php -->
Fatal error: Uncaught PhpAmqpLib\Exception\AMQPTimeoutException: The connection timed out after 3 sec while awaiting incoming data in /var/www/html/libs/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/AMQPReader.php
ошибок на издателе, и на принимающем кроличьем сервере, по-видимому, имеется много неверных данных (TCPAbortOnData) - около 400-500 соединений с ошибочными данными.
Я использую netdata для проверки здоровья.
На кроличьем сервере есть эти пики:
Я переместил код для использования надежных соединений с подтверждением, и это, похоже, решило спады потребителя вниз, но проблема с запросом публикации все еще сохраняется.
вот мой код публикации:
header("Cache-Control: no-cache, must-revalidate");
error_reporting(E_ALL);
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
/* example get request, i make around 10 of these */
if(isset($_GET['example'])) $example =
strtolower($_GET['example']); else $example = false;
/* example get request, i make around 10 of these */
//cleaning for gets
...
//cleaning for gets
$array = array(
"example" => $example,
...
);
$rabbit_queue_name = 'queue.something';
$connection = new AMQPStreamConnection('xxx.xxx.xxx.xx', 5672, 'xxxx', 'xxxxxx');
$channel = $connection->channel();
$channel->queue_declare($rabbit_queue_name, false, true, false, false);
$msg = new AMQPMessage(
json_encode($array,true),
array('delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT)
);
$channel->basic_publish($msg, '', $rabbit_queue_name);
$channel->close();
$connection->close();
header('Content-Type: application/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>
<data>
<result>1</result>
<value>1</value>
<msg>OK</msg>
</data>
<!-- END OF XML -->';
и вот плохие данные: