Я работаю над надежностью экземпляров EC2, использующих некоторый код Python для приема TCP-соединений.AWS Load Balancer Проверка работоспособности
Настроить: Сценарий настроен на прием нескольких соединений и выполняет некоторую обработку и отправляет результаты. Пинг с ELB распознается успешно, и машина становится здоровой.
Проблема: Если я имитировать тупиковую ситуацию в процессе обработки с бесконечным циклом, то пинги приняты, но сервер Python никогда не закрывает клиент; он остается в цикле. Странная вещь, хотя машина не может принимать больше соединений, экземпляр помечен как здоровый. Я ожидал бы, что машина будет нездоровой, поскольку никакие пингеры не могут быть приняты ею.
Мне интересно, действительно ли тот факт, что экземпляр уже принял пинги, а соединения по-прежнему открыты, означает «здоровую» машину? Или если здесь что-то еще ужасное? И, надеюсь, как это исправить!
Заранее спасибо.
Питон скрипт принимает соединение от пингов и обычно снова закрыть соединение, как только он понимает, что это на самом деле пинг. Но в симуляции взаимоблокировки он принимает пинг, и все. Он не принимает никаких дополнительных соединений от балансировщика нагрузки, поэтому я не уверен, почему машина считается здоровой. – FintanH
ELB поддерживает соединение и отправляет последующие запросы по этому существующему соединению, сценарий должен отвечать HTTP 200 на проверку здоровья ELB. Вы можете проверить это вручную, подключившись к вашему серверу в тех же условиях, используя инструмент «nc» (в unix/linux) и выполнив запросы GET, которые посылает проверка работоспособности ELB. – ColinSeligSmith
Но я не понимаю, что если скрипт ничего не делает (буквально «while True: continue»), то почему первоначальные запросы не синхронизируются? – FintanH