1С как выбрасывать пользователей из-за которых растёт tempdb?

Случаются ситуации, когда из-за какого-то отчёта или чего-то ещё в 1С (уже ищем) начинает резко расти объём tempdb (MSSQL), который съедает всё место на диске. Хотелось бы включить какое-то ограничение, чтобы при такой ситуации сеанс пользователя завершался.
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
@Dementor
программист, архитектор, аналитик
Именно кто наполняет tempdb напрямую увидеть нельзя, только методом онлайн анализа логов технологичного журнала, который настроен с ключем SDBL.

Но в консоли кластера (так же програмно из языка 1С, с помощью OneScript и с помощью RAS/RAC) можно по конкретной базе увидеть какие пользователи очень долго и в большом объеме захватывают СУБД.

У меня на прошлой работе (где я был инхаус и обеспечивал работоспособность системы) такие случаи были очень редкие и достаточно было в консоли кластера найти и потушить "проблемный сеанс" (пользователь запустил финансовый отчет за слишком большой период или вообще без фильтров). Если не помогало, то смотрел идентификатор rphost и просто его килял - проблемному пользователю вылетала ошибка, а остальные ничего не замечали, так как автоматически перекидывались на другие процессы кластера или дожидались старта нового процесса. Вот эти многобукв данного абзаца можно автоматизировать, если проблемы каждый день.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hint000
@hint000
у админа три руки
Во-первых, про митигирование (смягчение) проблемы. В настройках MSSQL можно ограничить максимальный размер файлов для tempdb (как и для любой БД). Вероятно, при переполнении в таком случае пользователь с "плохим" запросом получит какое-то сообщение об ошибке в 1С (но это не точно); простые запросы, не требующие tempdb продолжат выполняться.

Во-вторых, по существу вопроса: tempdb работает на уровне MSSQL и 1С не знает, когда растёт tempdb. В свою очередь, MSSQL не знает ничего о пользователях 1С, для него это только абстрактные данные в абстракной таблице в абстрактной БД. Как минимум, нет простого способа реализовать желаемое. Насчёт сложных способов лучше спросить на профильном форуме 1С-ников.

В-третьих, малыми силами можно мониторить размер tempdb (сторонним ПО, даже самописным скриптом) и отправлять уведомление админу, чтобы админ мог по горячим следам искать виновника.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы