Moving posts returns 502 bad gateway

I’m trying to move ~100 posts to an existing topic.

After a delay of about 10 seconds, it says there was an error when moving posts in a green alert area:

No new entries in /logs

No useful information in console either:

What can be wrong and where to look for the error?

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

Нам следует исправить коренную проблему: перемещение 100 сообщений на самом деле не должно занимать так много времени, и мы можем отложить выполнение части задач.


Отмечаем это как проблему производительности Contribute > Bug

For now, the work-around would be to move by small portions?

Yes, absolutely. Your server is stretched anyway from what I can tell.

У меня только что возникла ошибка 502 при попытке переместить сообщения из одной темы в другую.

Это происходит довольно часто :frowning:

Сколько вас было в движении?

В нашем случае это происходит несколько раз в последнее время при перемещении одного поста в новую тему.

Я пробовал несколько наборов: от сотен до десятков, затем по одному посту!
Не могу понять, почему иногда это не работает, а в других случаях всё отлично.

Обновился до версии 2.4.0.beta4 (cb8fa46970), но ошибка 502 при перемещении 1/5/10/50 сообщений всё ещё возникает.
Это нарушает административные процедуры, поэтому я не могу привести в порядок некоторые ветки.

Терпит.

Помогли бы логи/статистика/настройки?

@gerhard, это похоже на другую проблему, о которой сообщил @Pad_Pors?

Я вижу то же самое. В логах ничего подходящего не нашлось, кроме этого в /logs:

Ошибка: Фраза причины отсутствует
URL: https://.no/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js

Дайте знать, если есть способ отладить это более эффективно.

Я исправил ошибку, которая могла возникать при перемещении постов в существующую тему, которая ранее была разделена. Помогло ли это решить проблему, с которой вы столкнулись?


Вы уверены, что это происходило при перемещении в новую тему? Если да, то это другая ошибка, чем та, которую я исправил и заметил в наших логах.

К сожалению, с исправлением я всё ещё получаю ошибки 502:

Есть ли ошибка в /logs? Сколько постов вы перемещаете? Перемещаете ли вы первый пост темы? Перемещаете ли вы в новую или существующую тему? Затрагивает ли это что-то необычное (например, шепот, удалённые посты или ранее разделённые темы)?

Да, (до недавнего обновления) мы сталкивались с проблемой 502 Bad Gateway при попытке переместить ответы в новую тему (это происходило случайно и не всегда).

Я сообщу, если это продолжится.

К сожалению, мне не удаётся найти закономерность. Ошибка возникает при перемещении одного или нескольких сообщений. Однако у меня есть предположение, что она чаще всего происходит при перемещении между двумя крупными темами, которых у меня много. Многие из них были разделены несколько раз. Я никогда не использовал шепоты, но в большинстве тем много удалённых сообщений. В логах (/logs) нет явных ошибок :frowning:

edit: Кажется, это началось после обновления до бета-версии 5.

Привет,

на https://community.hiveeyes.org/ мы недавно столкнулись с тем же самым при перемещении сообщений между темами. Хотя мы пока не проводили более глубокого расследования,

Если это может помочь: речь шла всего об одном сообщении [1], которое мы хотели переместить из непубличной темы в публичную, и это вызвало ошибку. После неудачи мы вручную создали копию сообщения.

С уважением,
Андреас.

[1] Pycom Firmware Release 1.20.1 - #9 by clemens - Firmwareschmiede / Firmware development - Hiveeyes

Хорошо, ошибка 500 должна быть исправлена в последней версии. Я только что сделал коммит с ещё одним исправлением, чтобы в логах отображалась фактическая ошибка, если там есть ещё какой-то баг.

Если вы получаете ошибку 502, это значит, что процесс перемещения занимает слишком много времени и происходит тайм-аут. За последние несколько месяцев я внёс множество изменений, чтобы при перемещении постов переносилось больше метаданных. Я попытался оптимизировать этот процесс, но он сильно зависит от объёма данных и всё ещё может быть слишком ресурсоёмким для некоторых серверов, чтобы выполнить всю работу менее чем за 30 секунд.

Решение будет заключаться в том, чтобы ещё раз провести рефакторинг и постоянно хранить информацию о перемещённых постах в базе данных (вместо временной таблицы), а всю тяжёлую работу выполнять в фоновом задании.

Это похоже на правду, так как запрос действительно долго выполняется до получения 502 :slight_smile: