В нашем кластере 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 и как ее решить
Затем, во-вторых, хотелось бы услышать любое предложение об общем тайм-ауте сокетов / оно дерьмово. проблема.
Спасибо!