Ошибка 502 - chatables

Сегодня я получил ошибку 502 на Meta. Помимо всплывающего окна, я не заметил никаких неожиданных сбоев. Я точно не знаю, что вызвало это, и мне не всегда удаётся воспроизвести проблему, но я смог спровоцировать её несколько раз.

Вот что я сделал:

  1. Я нажал на значок «+» в боковой панели, чтобы открыть чат в личных сообщениях с человеком, с которым я уже общался ранее, но который сейчас отсутствует в моей боковой панели.
  2. Я нажал кнопку полноэкранного режима чата.
  3. Я уменьшил размер окна браузера.
  4. Я снова развернул окно браузера на весь экран.
  5. Я переключился из полноэкранного режима чата обратно в маленькое окно чата.
  6. Примерно через 7 секунд я увидел:

В консоли браузера было показано:

Это всё, что у меня есть. Надеюсь, кто-то сможет разобраться в этом лучше меня. Если это поможет, у меня есть видео, показывающее, как я воспроизвёл эту проблему.

1 лайк

Возможно, это вызвано этим шагом? Может ли такое происходить, когда вы ищете кого-то в фильтре этого чата?

1 лайк

Я думаю, я нашел шаг, необходимый для воспроизведения: когда я ввожу «L» в фильтр чата, ошибка появляется примерно через 30 секунд

2 лайка

В сериализаторе чат-группы использовался некорректный запрос для подсчёта пользователей с включённым чатом, и для вашего аккаунта его выполнение занимало около 30 секунд — это время истечения ожидания запроса на нашем хостинге (поэтому вы получали ошибку «случайно»)

3 лайка

Хм, я вижу, что это было слито. Это значит, что ошибка больше не должна возникать?

Если я правильно определил корневую причину, то да :sweat_smile:

Она всё ещё происходит?

Да, иногда реже. Это странно: иногда это занимает несколько секунд, и пользователи отображаются, а иногда это не удаётся.

:cry:

Когда это произойдет, не могли бы вы показать вкладку «Сеть» и запрос, который выполняется слишком долго?

Вздох. Вы спрашиваете так, будто это требует всего двух кликов мышью.

Попробую.

Вот что я имею в виду, говоря, что иногда это занимает несколько секунд, а иногда не удаётся:

image

Окей, я разобрался :sweat_smile:

Моя первая правка затронула лишь часть проблемы :man_facepalming: При поиске групп в фильтре чата выполнялся ещё один неэффективный запрос к базе данных. В зависимости от того, какие группы совпадали с вашим поисковым запросом, выполнение запроса могло занимать очень много времени — иногда превышая тайм-аут нашего запроса.

Интересно, что это влияло только на «обычных» пользователей, а не на «администраторов», поэтому я не мог воспроизвести проблему самостоятельно :thinking:

При поиске групп результаты возвращаются в алфавитном порядке. Администраторы видят все группы, поэтому их первые 10 результатов для буквы «L» — это небольшие группы, начинающиеся на «a» (например, «ai-personas» и другие непубличные группы). У обычных пользователей видимость более ограничена, поэтому в их результаты попали крупные группы по уровням доверия :grimacing:, что и вызвало медленный запрос.

Обычный пользователь видит:

  • trust_level_0: 62 506 пользователей
  • trust_level_1: 34 494 пользователя
  • trust_level_2: 4 727 пользователей
  • trust_level_3: 39 пользователей
  • trust_level_4: 13 пользователей
  • плюс несколько небольших групп

Всего: ~102 000 пользователей для загрузки :collision:

Администратор видит:

  • a*****: 4 пользователя
  • a*****: 76 пользователей
  • a*****: 0 пользователей
  • a*****: 2 пользователя
  • ai-personas: 138 пользователей
  • и т. д.

Всего: ~240 пользователей для загрузки :relieved:

1 лайк

Почему поиск по «L» возвращает эту группу?

Просто я провалился с «анонимизацией» данных и придумал пример :man_facepalming:

1 лайк

В полном названии группы есть буква «L», поэтому я не был уверен, связано ли это с этим или это просто случайный пример.