Очень высокие транзакции в секунду

8

Наш производственный сервер выполняет в среднем 4000 транзакций в секунду. В последние несколько дней среднее число выросло до 175 000 транзакций в секунду. Это не опечатка, это 175K в секунду.
Рассматривая DMV для транзакций, мы не можем напрямую связать их с сеансами пользователей, но мы видим это:

SELECT NAME,
       COUNT(*)
FROM   sys.dm_tran_active_transactions
GROUP  BY NAME
ORDER  BY 2 DESC 

-

+------------------------------+-------+
|             Name             | Count |
+------------------------------+-------+
| WorkFileGroup_fake_worktable |   627 |
| LobStorageProviderSession    |   217 |
| workfile                     |   171 |
+------------------------------+-------+

Может ли кто-нибудь пролить свет на подобные транзакции? Или я гоняюсь за призраками здесь?

paulbarbin
источник
Может быть, вы можете профилировать сервер, выполнив sp_whoisactive несколько раз. Какие запросы возникают чаще всего?
USR
Вероятно, не ясно, но в оригинальном тексте я заявил, что нет никакой корреляции между пользовательскими процессами и транзакциями. Обычно у нас есть около 4000 подключенных пользователей, и в любой момент времени от 40 до 60 из них являются работающими спидами. В течение этого раздутого периода транзакции было еще 40-60 спинов - без разницы.
Паульбарбин
Обновление: значение tps вернулось к нормальному значению, и мы не видим никакой реальной причины для этого. Единственное, что имеет какой-либо смысл, - это то, что у нас был связанный запрос к серверу, выполняющийся там, где выглядело, как будто вся таблица перетаскивалась по проводам в базу данных tempdb. Этот процесс занимал гораздо больше времени, чем обычно. Возможно ли, что tps был посчитан как 1 строка в таблице = 1 транзакция ?? Таблица содержит 50 тыс. Строк, и пользователи исполняют ее в произвольном порядке, поэтому 3 раза в секунду вызывается, и это МОЖЕТ сложиться, но это маловероятно.
Паульбарбин
2
Если бы это был мой сервер, я бы провел быструю трассировку на стороне сервера. Может быть, просто 5-минутный след, чтобы увидеть, есть ли вероятность того, что подсчет tps является ложным. Я определенно спам sp_whoisactive для наблюдения запросов в полете тоже.
Питер

Ответы:

1

Следите за высокой активностью снова; когда вы увидите его, запустите трассировку на стороне сервера или, если необходимо, кратко воспользуйтесь Profiler, чтобы увидеть, что происходит.

В качестве альтернативы используйте перехватчик пакетов, например Wireshark, для захвата необработанной проводной активности.

Проверьте dm_exec_cached_plans, чтобы увидеть, дает ли это какое-либо представление о том, что происходит.

Посмотрите dm_io_virtual_file_stats, чтобы увидеть, какие файлы, в частности, если таковые имеются, подвергаются ударам .

Анти-weakpasswords
источник