Рейтинг:1

Прерывистый сброс соединения 104 узлом в GCP us-east4

флаг br

ЗАДНИЙ ПЛАН

У меня есть давно работающий дискорд-бот (3+ года), написанный на разногласия.py который всегда работал на GCP, зона us-east4-a. Бот работает в к8с используя discord.py 1.7.2 и python 3.9.

ПРОБЛЕМА

За последний месяц или два я стал замечать все большее количество прерываний соединения, [Ошибка 104] Сброс соединения узлом. Сбросы не связаны напрямую с активностью бота. Они происходят с перерывами в течение дня в производственной среде (в среднем каждые несколько минут).

Эти сбросы вызывают случайные сбои в HTTP API разногласий и приводят к высокому уровню отключений в WebSocket. Многие из этих отключений сегментов могут ВОЗОБНОВИТЬСЯ, но многие (~ 200 в день) в конечном итоге приводят к вызову IDENTIFY, например, к новому подключению, и иногда вызывают длительные ожидания отсрочки и частичные сбои.

ПРИМЕР

Вот пример отключения:

Traceback (последний последний вызов):
  Файл "/opt/venv/lib/python3.9/site-packages/discord/shard.py", строка 187, при повторном подключении
    self.ws = ожидание asyncio.wait_for(coro, timeout=60.0)
  Файл "/usr/local/lib/python3.9/asyncio/tasks.py", строка 481, в wait_for
    вернуть фут.результат()
  Файл "/opt/venv/lib/python3.9/site-packages/discord/gateway.py", строка 305, в from_client
    gateway = gateway или await client.http.get_gateway()
  Файл "/opt/venv/lib/python3.9/site-packages/discord/http.py", строка 967, в get_gateway
    data = await self.request(Route('GET', '/шлюз'))
  Файл "/opt/venv/lib/python3.9/site-packages/discord/http.py", строка 192, в запросе
    async с self.__session.request(method, url, **kwargs) as r:
  Файл "/opt/venv/lib/python3.9/site-packages/aiohttp/client.py", строка 1117, в __aenter__
    self._resp = ждать self._coro
  Файл "/opt/venv/lib/python3.9/site-packages/aiohttp/client.py", строка 544, в _request
    ждать resp.start(conn)
  Файл "/opt/venv/lib/python3.9/site-packages/aiohttp/client_reqrep.py", строка 890, в начале
    message, payload = await self._protocol.read() # тип: ignore
  Файл "/opt/venv/lib/python3.9/site-packages/aiohttp/streams.py", строка 604, чтение
    ждать себя._waiter
aiohttp.client_exceptions.ClientOSError: [Errno 104] сброс соединения узлом 

ЭКСПЕРИМЕНТ ДЛЯ ВЫЯВЛЕНИЯ ПРОБЛЕМЫ

Я провел эксперимент, чтобы определить причину проблемы. Я развернул контейнер с моим ботом на виртуальной машине (не к8с) и изолировал его таким образом, чтобы он общался только с разногласиями (без внешней базы данных) и автоматически отправлял ему команды для имитации поведения пользователя и загрузки (я отправляю около 60 команд в минуту на том же сервере — это хорошо при моей производственной нагрузке). Я запускаю это в течение 20 минут или пока не наблюдаю, происходит ли сброс соединения, и вижу следующее:

  • В сша-восток4-а, я могу воспроизвести периодические сбросы соединения.
  • В сша-восток4-б, я могу воспроизвести периодические сбросы соединения.
  • В сша-восток4-c, я могу воспроизвести периодические сбросы соединения.
  • В us-central1-a, Я не удалось воспроизвести какие-либо сбросы соединения (даже по прошествии 3 часов - ни один шард не отключается).
  • В us-east1-b, Я не удалось воспроизвести какие-либо сбросы соединения.
  • На моем ноутбуке (жилой интернет на восточном побережье) я не удалось воспроизвести какие-либо сбросы соединения.

Во всех экспериментах используется один и тот же контейнер, один и тот же тип машины и одна и та же процедура испытаний.

Я повторил эксперимент в сша-восток4-а с несколькими типами машин до 8 виртуальных ЦП и с премиальным и стандартным сетевыми уровнями, и я все еще вижу сбросы. Я также попробовал другую виртуальную машину в другом проекте, но проблемы с подключением всегда сохраняются в сша-восток4.

У меня открыта заявка на поддержку в GCP, так как проблема связана с конкретным регионом.

Есть ли какие-либо дополнительные эксперименты, которые я мог бы предоставить, чтобы попытаться сузить причину этого? Существуют ли какие-либо распространенные проблемы с конфигурацией GCP, которые могут привести к этой проблеме?

Если не считать переезда в другой регион, я чувствую, что у меня нет вариантов.

Priya Gaikwad avatar
флаг us
Можете ли вы подтвердить, решена ли ваша проблема или вы все еще сталкиваетесь с какой-либо проблемой?
Рейтинг:0
флаг pe

Я просмотрел средство отслеживания общедоступных проблем, упомянутое в предыдущем ответе, но оно уже закрыто, поскольку в нем недостаточно элементов для воспроизведения проблемы.

Кроме того, поскольку мы не знаем о вашей конфигурации VPC или правилах вашего брандмауэра, кажется немного сложным дальнейшее устранение проблемы с предоставленной информацией.

Возможно, это не решение вашей проблемы, но я бы порекомендовал вам открыть тикет в службу поддержки с поддержкой GCP чтобы лучше решить вашу проблему.

Рейтинг:0
флаг gh

Как упоминалось в Группы Google обсуждение: «Команда Google Cloud Compute Engine уже исследует эту региональную проблему, происходящую на «us-east4». Вы можете ожидать еще одно обновление относительно RCA (если таковое имеется) в общедоступном отчете системы отслеживания проблем. Не стесняйтесь комментировать там». Как упоминалось в обновлении другого канала поддержки, ход решения этой проблемы можно отслеживать через общедоступную проблему. трекер.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.