Beanstalkd prot. c: 710 в check_err: read (): сброс соединения по одноранговой сети - медленная связь с сокетом в кластере k8s - PullRequest
0 голосов
/ 29 апреля 2020

В нашем кластере kubernetes у нас есть 3 службы BE (размещенные на GCP).

У нас есть 1 экземпляр службы Beanstalkd и 1 кластер ES (3 главных модуля, 2 модуля данных, 2 модуля клиента). Каждое приложение BE имеет свой собственный экземпляр Redis и сервер Mysql.

Теперь мы создали различные проверки работоспособности и регулярно видим (например, 5-10 раз в день) проблемы со скоростью соединения. В проверке работоспособности все, что мы делаем, это подключаемся к услуге и проверяем, сколько времени это занимает (через php), и если это занимает слишком много времени (или вообще не подключается), мы поднимаем флаг.

Мы видим результаты, такие как:

Test took 10.616209983826 sec at 2020-04-28 23:45:11.
Environment: production
Test took too long - more than 2 seconds.
Checked items and their timing:
pdo took 0.0043079853057861 seconds
beanstalkd took 10.036059141159 seconds
redis took 0.0028140544891357 seconds
ElasticSeearch took 0.57300901412964 seconds

Иногда это Redis занимает много времени, иногда это ES. Но в основном это Beanstalkd (до 20 секунд!). Вот пример кода, как мы его проверяем:

$startbeanstalkd = microtime(true);
// connect to Beanstalkd
try {
    $queue = new Beanstalk(
        [
            'host' => $config->beanstalkd->host,
            'port' => $config->beanstalkd->port
        ]
    );
    $queue->connect();
} catch (\Exception $e) {
    $testPassed = false;
    $testResult['Beanstalkd']['status'] = false;
    $testResult['Beanstalkd']['message'] = $e->getMessage();
    $testResult['Beanstalkd']['connectionDetails'] = json_encode($config->beanstalkd);
}
if($testPassed) $queue->disconnect();
$beantime = microtime(true);
$timetrack['beanstalkd'] = $beantime - $startbeanstalkd;

Мы заметили эту ошибку от beanstalkd regulary:

/usr/bin/beanstalkd: prot.c:710 in check_err: read(): Connection reset by peer

Но поиск по этому вопросу на самом деле не дал нам большой информации.

Замечание действительно актуально, я думаю, но мы используем Rancher 2 для управления нашими кластерами.

Во-первых, мне бы хотелось узнать, что означает ошибка beanstalkd и как ее решить

Затем, во-вторых, хотелось бы услышать любое предложение об общем тайм-ауте сокетов / оно дерьмово. проблема.

Спасибо!

...