То же самое в безопасном режиме (в любом случае у меня нет пользовательских тем или плагинов, кроме data-explorer), версия 2.6.0.beta2
Мой сервер работает под управлением Ubuntu 18, имеет 4 vCPU, 8 ГБ ОЗУ и 160 ГБ дискового пространства.
20–30 секунд, возможно? Кроме того, это не происходит при переименовании других категорий.
edit: также происходит на моём форуме для разработки (довольно мощный компьютер с подсистемой Ubuntu).
re-edit:
Разделение на более мелкие партии, похоже, работает. Значит, Discourse не любит перемещать более 3000 тем, даже на более мощном сервере (я увеличил конфигурацию до 16 vCPU / 32 ГБ). Так что, думаю, эта проблема отличается от переименования моих категорий. Я всё ещё не могу переименовать категорию.
Я создал новую категорию B (которую могу переименовывать по желанию), переместил все темы из категории A (которую не могу переименовать) в категорию B: после этого я больше не могу переименовать категорию B, но могу переименовать категорию A.
Я пробовал переименовывать свои категории, каждый раз выбирая категорию с большим количеством постов. Категория с большим количеством контента (больше постов, более длинные темы), похоже, требует больше времени для переименования.
Есть 2 категории, которые я не могу переименовать (действительно кажется, что это занимает слишком много времени…):
30 секунд — это тайм-аут nginx, так что это логично. Ему просто нужно больше времени, чем это.
Если бы я был на вашем месте, я бы попробовал это из консоли Rails.
Я думал сделать это так, но не был уверен, что это безопасно: интересно, почему переименование заголовка категории в Discourse занимает так много времени
Неужели там нужно проверять что-то, о чём я даже не задумываюсь?
Похоже, что да
Думаю, оно может пересчитывать некоторые статистические данные. Вы можете подключиться к Postgres и выполнить что-то вроде:
SELECT pid, age(query_start, clock_timestamp()), usename, query
FROM pg_stat_activity
WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%'
ORDER BY query_start desc;
чтобы увидеть, что именно занимает так много времени.
Поскольку у меня возникла та же проблема на моей установке для разработки на домашнем компьютере, я попробовал на своём форуме для разработчиков.
Я попытался изменить название категории через интерфейс Discourse. Ошибка, показанная в моём первом сообщении, возникла, и моя оперативная память была полностью заполнена:
Обновление: Я попытался переименовать категорию на другом, действующем форуме (другие данные/сервер/ОС и т. д., но версия Discourse та же).
Изменение названия категории занимает много времени (~10 секунд). Я пробовал несколько раз и также один раз столкнулся с ошибкой 502.
Мне кажется, это проблема в самом Discourse, возможно, связанная с недавним обновлением?
Оба форума используют версию 2.6.0.beta2.
Не мог бы кто-нибудь попробовать изменить название категории (категории с тысячами или десятками тысяч тем) на своём форуме с той же версией Discourse, чтобы проверить, будет ли это медленно или возникнет ошибка 502?
Я не помню, чтобы на моём предыдущем форуме (который тоже был импортирован) возникала ошибка 502, но я не переименовывал категорию с момента импорта три года назад. Не помню, было ли переименование категории медленным. Что касается моего нового, более крупного форума, он был импортирован на той версии Discourse, о которой я упоминаю, поэтому я не могу сравнить его с более старой версией.
Только небольшое уточнение: я думаю, что ранее я выполнял Category.where(id: 21).update(name: "General") для категории, из которой я переместил темы или что-то в этом роде, потому что сейчас мне пришлось использовать эту команду несколько раз для различных категорий, и оказывается, что время выполнения команды пропорционально количеству постов в целевой категории.
Так что, по сути, это та же проблема, что и при обновлении категории через интерфейс, за исключением того, что в командной строке не происходит тайм-аута.
Для категории с более чем 30 000 тем это заняло, возможно, более минуты, для категории с более чем 15 000 тем — более 30 секунд, а для категорий с небольшим количеством тем всё прошло быстро.
Наш форум в последние 6 месяцев стал всё чаще выдавать ошибки. Я только что удвоил ресурсы сервера (16 процессоров, 64 ГБ ОЗУ), и хотя он работает значительно лучше, я обнаружил воспроизводимую ошибку.
Попытка переименовать одну категорию каждый раз приводит к ошибке 502.
Вы соответствующим образом настроили параметры в app.yml?
Вам стоит посмотреть логи, чтобы понять, есть ли какая-то подсказка. Есть ли что-то особенное в этой категории? Возможно, у вас повреждён индекс базы данных?