powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Мониторинг - статистики
18 сообщений из 43, страница 2 из 2
Мониторинг - статистики
    #40123448
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv

Например - в базе внезапные тормоза, работает запрос. В чем причина? Оказалось, что была длинная транзакция (чья-то, х.з.), после чего накопились тонны мусора, кто-то запустил запрос и в это время сработал репликатор (который программно собирает записи по всей базе), и началась адова сборка мусора.
Определили причину трейсом плюс мон.


Дим, сколько миллиардов записей должно быть в таблице, чтобы апдейт одного поля поштучно с where по уникальному индексу продолжался трое суток, даже на фоне адовой сборки? Там либо where с условием по блобам, либо с запросами к "другой" базе всё хорошо, прекрасная маркиза, либо база действительно после b/r уменьшается раз в 100, либо всё вместе :)
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123466
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

"может быть всё что угодно!". Может админ в этот момент начал копировать подборку BD-фильмов с сервака. Кроме того, мы знаем, что если кто-то долбит writes в одни и те же страницы, то там сборка мусора плохо работает, в результате уборщица постоянно топчется на входе. Все это в сумме может растянуться на трое суток.
Но скорее всего косяк в процедуре :-)
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123468
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я еще добавлю.
вот пялимся в mon$attachments, прибавляя статистику по страницам.
Смотрим на коннект с процедурой. Если он делает page writes раз в 10 больше остальных коннектов, которые там часами сидят, то конечно это ненормально.
Всё познается в сравнении. А не в каких-то непонятных "суммированиях за сутки".
Потому что если процедура работает, то page writes уже есть, и для "оценки" нам надо было бы вернуться в прошлое на трое суток назад, и целый день смотреть в mon$.
Короче, либо я не понял чего хочет автор, либо у автора нет понимания как производится и оценивается мониторинг сервера.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123494
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие вы тут суровые. Автор уже почти ничего не хочет, он получил нужные ответы весьма быстро, за что искренне благодарен гуру. А дальше пошла дискуссия, в которой автор посчитал невежливым не участвовать, ибо сам запустил тему.

И еще автору, то есть мне, непонятно, что непонятно осталось вам. Попробую еще раз, простыми словами.

1. Запустил процедуру.

2. Процедура не возвращается. Час не возвращается, другой не возвращается... Что делать?
Вдруг она зациклилась, или ждет на suspend, или еще что? А может, и нормально работает, просто долго. Как узнать?

3. К счастью, известно, что процедура должна последовательно обновлять определенную таблицу.
Из других транзакций изменения не видны, но сам факт наличия обновлений можно посмотреть из мониторинга (надеется автор).
Коннектов всего два, один исполняет процедуру, другой мониторит.

4. Ура, есть такая штука, как PAGE_WRITES! Ну-ка, что там? 500. Что 500, чего 500? Вопрос на форум - ответ получен!
Это 500 страниц обновлены с какого-то момента старта. Ладно, смотрим через минуту - 510, через 2 минуты - 520, через 3 минуты 530,
равномерно и поступательно. Отлично, значит работа идет по плану, откладываем беспокойство, ждем результата.

Собственно, все, ответы получены, проблема снята.

А дальше философия: от абсолютного числа 500 проку никакого нет, и непонятно, когда и кому он может быть, если неизвестно время старта. Зато очень полезны разницы, через минуту, через час и пр. Да не вопрос, можно и руками разницы вычислить. Просто философия.

kdv
либо у автора нет понимания как производится и оценивается мониторинг сервера.

Эт точно. Вот и набираюсь тут помаленьку. А где еще? В "Руководстве по языку" прочитал ровно то, что вынес в топик. Других документов, где рассказывалось бы про мониторинг, не видел, и на ibase.ru тоже. Наверное, плохо искал. А здесь хорошо, мне уже много рассказали, спасибо hvlad'у прежде всего.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123496
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

гм. чтобы понимать мониторинг, надо понимать
- разницу между архитектурами SS, CS/SC
- что файл базы - это страничный файл произвольного доступа
- что на страницах располагаются записи, ключи индексов, указатели, и прочее.
- что у Firebird есть кэш, который наполняется и вытесняется
- что есть таблицы мониторинга mon$, которые показывают состояние сервера.

Вот. Сумма всех этих знаний дает нормальное понимание последнего пункта.

Собственно, такую статью можно написать, но это очень скучно, и нынче такое читать непопулярно. Люди даже готовые средства мониторинга неохотно используют, а тут целую статью читать надо.
А в общем во всех базах данных примерно одно и то же. Поэтому если есть понимание только SQL и Delphi, то понимание перечисленного выше никак не образуется, без чтения общих статей про базы данных.

Ну и, например, зачем надо было в page_writes лезть, если можно было смотреть record_stats (например, MON$RECORD_SEQ_READS и MON$RECORD_UPDATES), с бОльшим успехом.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123607
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky2. Процедура не возвращается. Час не возвращается, другой не возвращается... Что
делать?

Прервать и переписать.

shalamyanskyВдруг она зациклилась, или ждет на suspend, или еще что? А может, и нормально
работает, просто долго. Как узнать?

"Ждать на SUSPEND" процедура не может, этот процесс требует взаимодействия с
клиентом, который её запустил.

"Работает нормально, но долго"... Если процедура работает долго - это уже
ненормально. Прервать и переписать.

Кроме того, если процедура работает нормально, это видно по 100% загрузке серверного диска. Из мониторинга достаточно iotop/Task Manager.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123610
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Прервать и переписать.
проще же 2 дня подождать, чем 2 часа работать. Странно ты рассуждаешь, работать заставляешь.

Мы у себя около полуночи отрубаем все коннекты, ибо нефиг.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123654
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky
Dimitry Sibiryakov
Прервать и переписать.
проще же 2 дня подождать, чем 2 часа работать. Странно ты рассуждаешь, работать заставляешь.


Дык этта... Любой естественный процесс, как известно, состоит из трёх фаз - for play, action, after play. Я так тоже привык основное внимание уделять for play, но есть и любители action до мозолей, а некоторым всё это пофиг, важно заняться after play с результатом :)
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123659
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky

2. Процедура не возвращается. Час не возвращается, другой не возвращается... Что делать?
Вдруг она зациклилась, или ждет на suspend, или еще что? А может, и нормально работает, просто долго. Как узнать?


А, таки соломка в виде suspend после update таки положена? Открою маленький секрет - клиент увидит эти suspend-ы не сразу, а когда их наберётся достаточно толстая пачка чтобы заполнить стандартный сетевой пакет. И счётчик на клиенте резко прыгнет на размер пачки. Чтобы видеть их по одному и сразу, надо делать не select from procedure, а select for update from procedure. Но это затормозит естественный процесс. Не фатально, но заметно.

У селективных процедур, изменяющих данные, есть ещё один прикол, но на него обычно наступают люди боле-мене искушённые. Суть его в том, что у людей, помнящих о мусоре и разрыве транзакций, есть привычка коммитить транзакции, если в них выполняются только селективные запросы или одиночный изменяющий данные оператор. Так вот, при коммите транзакции, в которой выполняется такая селективная процедура, уже suspend-нутые изменения зафиксируются в базе в случае возникновения исключения. В отличие от прямого update с клиента и execute неселективной процедуры, где всё будет отменено из-за исключения, независимо от способа завершения транзакции. Если логика обновления такого не допускает, надо плюнуть на принципы и сделать роллбак.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123887
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Прервать и переписать.


Что-то вдруг задумался - а какие сейчас есть безопасные методы для "прервать"? Через mon$ таблицы? Можно тынцем или просто доку к какой версии почитать, когда появилось. В моё время на классике дело кончалось килянием серверного процесса, что ну ни разу не безопасно, а про супер просто не знаю, не пользовал.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123899
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка
безопасные методы для "прервать"? Через mon$ таблицы?
Безопасно, да, но прервать ресурсоемкий процесс может получиться сильно не сразу, сервер может задуматься весьма надолго. Да и само обращение к мон* под нагрузкой не мгновенное и недешовое. Если кильнуть клиента, то транзакция откатится, но сервер реагировать на keepalive может тоже достаточно долго.

Бывал грешен, не дожидался, килял сам процесс сервера, "веселых" последствий пока не огреб, но советовать килять сервер не стану.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40123917
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаа какие сейчас есть безопасные методы для "прервать"?

Если приложение своё - fb_cancel_operation(). isql это делает автоматически по
Ctrl-C.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40124167
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Старый плюшевый мишкаа какие сейчас есть безопасные методы для "прервать"?

Если приложение своё - fb_cancel_operation(). isql это делает автоматически по
Ctrl-C.

в том же коннекте?
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40124172
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Само собой, это же клиентский API-вызов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40124255
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
можно было смотреть record_stats (например, MON$RECORD_SEQ_READS и MON$RECORD_UPDATES), с бОльшим успехом.

Логично. Схватился за первое, что попалось вроде подходящее. MON$IO_STATS по алфавиту раньше, чем MON$RECORD_STATS.

Старый плюшевый мишка
Открою маленький секрет

Вот это спасибо. Маленькие секреты всегда хороши. Особенно, если в памяти остаются. Хотя бы в памяти остается факт существования маленького секрета.

Всех с наступающим Новым Годом! Всем здравого по возможности ума и твердой памяти!
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40124257
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyСхватился за первое, что попалось вроде подходящее. MON$IO_STATS по алфавиту
раньше, чем MON$RECORD_STATS.

И точно так же бесполезны в твоём случае.

Если у тебя FOR SELECT ON EDS, а внутри какой-нибудь UPDATE, то маленькая
ошибочка в виде забытого условия в этом UPDATE будет упорно молотить всю
таблицу, задирая количество записанных страниц до небес, а если таки дождаться
результата, то он будет всё так же ужасом, после которого придётся
восстанавливать базу из бэкапа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40124259
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Вам бы сценарии писать для сочельниковских ужастиков. Однако, статистика по обновлениям поможет и в этом кошмарном случае, ибо дикое число обновлений столь же греховно, сколь и полное их отсутствие.
...
Рейтинг: 0 / 0
Мониторинг - статистики
    #40124262
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Само собой, это же клиентский API-вызов.

ну мало ли... у кого то вроде через отдельный коннект было

ок, вызов в том же коннекте...
поясните кто в теме
отправил я op_execute, что писать в сокет по истечении таймаута? нашел в драйвере константу op_cancel = 91, оно?
отправили op_cancel с fb_cancel_raise (гошный драйвер про эти константы даже не в курсе), какой пакет(ы) придут (могут прийти) от сервера после? op_response в ответ на op_cancel а после op_response на op_execute со статусом cancelled?
а наоборот может быть, если на момент отправки op_cancel сервер завершил выполнение запроса?
как правильно потом прочитать ответы, понять где-какой, чтобы после можно было использовать коннект повторно?
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Мониторинг - статистики
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]