Окей, я разобрался ![]()
Моя первая правка затронула лишь часть проблемы
При поиске групп в фильтре чата выполнялся ещё один неэффективный запрос к базе данных. В зависимости от того, какие группы совпадали с вашим поисковым запросом, выполнение запроса могло занимать очень много времени — иногда превышая тайм-аут нашего запроса.
Интересно, что это влияло только на «обычных» пользователей, а не на «администраторов», поэтому я не мог воспроизвести проблему самостоятельно ![]()
При поиске групп результаты возвращаются в алфавитном порядке. Администраторы видят все группы, поэтому их первые 10 результатов для буквы «L» — это небольшие группы, начинающиеся на «a» (например, «ai-personas» и другие непубличные группы). У обычных пользователей видимость более ограничена, поэтому в их результаты попали крупные группы по уровням доверия
, что и вызвало медленный запрос.
Обычный пользователь видит:
- 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 пользователей для загрузки ![]()
Администратор видит:
- a*****: 4 пользователя
- a*****: 76 пользователей
- a*****: 0 пользователей
- a*****: 2 пользователя
- ai-personas: 138 пользователей
- и т. д.
Всего: ~240 пользователей для загрузки ![]()