Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Superserver: как узнать, какой коннект грузит процессор?  [new]
shalamyansky
Member

Откуда:
Сообщений: 70
Firebird 3.0 Superserver
~ 10 активных баз, самая крупная 800 Гб
Windows Server 2012

Ситуация: при отсутствии активности со стороны клиентов длительное время (более суток) полностью загружена Firebird'ом одна нитка процессора. Локализовать проблему (но не понять её причину) удалось последовательным просмотром псевдотаблиц мониторинга всех активных баз. В одной из баз обнаружена очень долгая транзакция, её "хозяев" найти не удалось. Проблема снята перезапуском конкретной базы (full shutdown, online).

Вопрос: как в режиме Superserver понять, коннект к какой базе грузит процессор, не перебирая вручную все возможные базы?

Использовались инструменты:
Sysinternals Process Explorer
IBExpert
26 авг 19, 18:58    [21957861]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
Arioch
Member

Откуда:
Сообщений: 10967
а дисковой активности у этой нитки не было, только процессорная ?
26 авг 19, 19:10    [21957870]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
shalamyansky
Member

Откуда:
Сообщений: 70
Не додумался посмотреть. В другой раз буду знать. Смутно припоминаю, что на графиках производительности, которые выводит ProcessExplorer, вроде не было особой дисковой активности.

Но там общая по всем процессам. А как посмотреть дисковую активность конкретной нитки? По процессам еще можно как-то, но по нитям?
26 авг 19, 20:03    [21957890]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
shalamyansky,

в таблицах мониторинга дисковая активность есть
26 авг 19, 21:01    [21957923]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
shalamyansky
Member

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

Хотелось бы, например, иметь инструмент а-ля совокупные таблицы мониторинга по всем базам.
26 авг 19, 21:57    [21957939]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
shalamyansky
совокупные таблицы мониторинга по всем базам
Это вряд ли.
Вот трейс - работает независимо от БД.
Но если там, например, один запрос молотит полчаса и не выдаёт записи - трейс его только по окончании покажет
26 авг 19, 23:34    [21957979]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
Arioch
Member

Откуда:
Сообщений: 10967
shalamyansky
А как посмотреть дисковую активность конкретной нитки? По процессам еще можно как-то, но по нитям?


ну и смотри по процессам, зачем тебе нити?

ты ж говоришь у тебя все остальные БД в idle

process monitor, фильтр по процессу fbserver, фильтр по маске файлов типа *.fdb и смотришь как часто и какая БД вываливается

тебе же сам говоришь надо не нить найти, а БД!

shalamyansky
коннект к какой базе грузит процессор
27 авг 19, 12:02    [21958200]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Resource Monitor показывает IO в разбивке по файлам
27 авг 19, 12:05    [21958204]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
Arioch
Member

Откуда:
Сообщений: 10967
а в ProcExp есть жесткий способ - открываешь мониторилку дисковой нагрузки, например Диспетчер Задач в Windows 8+, в PE открываешь список нитей процесса, и начинаешь нитям по одной делаеть Suspend/Resume, и смотришь при усыплении какой нити димсковая активность резко падает. ...если конечно, тебе нити реально нужны зачем-то. Надеюсь полусекундную приостановку любой нити FB переживёт без фатальных последствий.
27 авг 19, 12:07    [21958205]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Arioch,

нужно или очень хорошо понимать внутренности испытуемого процесса, или
совершенно ничего не понимать в мультипоточном программировании, чтобы нести такую чушь.
27 авг 19, 13:46    [21958294]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
Arioch
Member

Откуда:
Сообщений: 10967
hvlad,

а что самое фатальное может случиться в FB при полусекундном suspend любой нити в ситуации
shalamyansky
при отсутствии активности со стороны клиентов длительное время (более суток) полностью загружена Firebird'ом одна нитка процессора
?

отвалятся несколько фоновых транзакций, который запускаются независимо от действий пользователя?
27 авг 19, 13:58    [21958308]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Arioch,

фатального - ничего, отвалится - не надейся.
Всё просто остановится.
27 авг 19, 14:00    [21958312]     Ответить | Цитировать Сообщить модератору
 Re: Superserver: как узнать, какой коннект грузит процессор?  [new]
shalamyansky
Member

Откуда:
Сообщений: 70
Arioch
process monitor, фильтр по процессу fbserver, фильтр по маске файлов типа *.fdb


Да, воспользовался process monitor'ом, спасибо за подсказку. Давненько не брал я в руки шашек. Нужная база быстро нашлась, когда ситуация повторилась. Проблема таки оказалась в клиенте (Java Spring JPA). Зачем он начинает вдруг бомбардировать сервер непрерывными запросами по кругу, предстоит еще разбираться. Но это уже другая история.
29 авг 19, 20:45    [21960136]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить