powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при свипе
25 сообщений из 79, страница 1 из 4
deadlock при свипе
    #39746732
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бывший коллега прислал лог:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SOCGEOSRV (Server) Wed Dec 12 15:17:35 2018
Sweep is started by SWEEPER
Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB"
OIT 930737570, OAT 943084798, OST 943084791, Next 943084819

SOCGEOSRV (Server) Wed Dec 12 15:19:54 2018
INET/inet_error: read errno = 10054

SOCGEOSRV (Server) Wed Dec 12 15:22:05 2018
Error during sweep:deadlock

SOCGEOSRV (Server) Wed Dec 12 15:22:05 2018
Error during sweep:deadlock

SOCGEOSRV (Server) Wed Dec 12 15:22:05 2018
Error during sweep:deadlock

Единственное, что я знаю про базу что она 45 гиг и что FB скорее всего 2.5.
Что это может быть?
Надеюсь, что он придёт в этот форум и расскажет больше подробностей.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39746773
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenНадеюсь, что он придёт в этот форум и расскажет больше подробностей.Без них - никак
...
Рейтинг: 0 / 0
deadlock при свипе
    #39746799
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
firebird 2.5.7.27050 SuperServer.

Предположительно началась сборка мусора, база начала тормозить у всех клиентов (зависли транзакции).
Закрыли программы и перезагрузили сервер (принудительно сервис FB не останавливали)

После перезапуска соединение к базе данных завершается ошибкой
SQL Message: -913
deadlock

в логах заускается sweeper

потом

Error during sweep:deadlock
...
Рейтинг: 0 / 0
deadlock при свипе
    #39746801
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лог firebird
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747005
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал копию базы

1.запустил на ней gfix -v -full
выдало
Код: plaintext
1.
2.
3.
4.
Summary of validation errors

	Number of record level errors	: 3
	Number of database page errors	: 43

2.запустил gfix -v -ignore не выдало ничего
3.запустил gfix -mend
выдало то же самое что в первом пункте
4.опять запустил gfix -v -full опять выдало то же самое

в firebird.log 3 сообщения вида
Код: plaintext
Index 3 misses node on page 2523460 level 1 in table REC_HEADERS (196)
и несколько типа
Код: plaintext
Page 1771984 is an orphan
и еще 3 штуки типа
Код: plaintext
Relation has 18 orphan backversions (282 in use) in table RDB$TRIGGERS (12)

Также параллельно (после копирования и запуска FB) cделал бекап основной базы с ключем -g. После бекапа по логам на основой базе опять видимо запустился sweep и закончился, потом сразу опять запустился и закончился спустя час
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SOCGEOSRV (Server)	Wed Dec 12 19:30:16 2018
	Sweep is finished
	Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB" 
	OIT 943086403, OAT 944338117, OST 944337973, Next 944338176


SOCGEOSRV (Server)	Wed Dec 12 19:30:16 2018
	Sweep is started by SWEEPER
	Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB" 
	OIT 943086403, OAT 944338117, OST 944337973, Next 944338183

.....

SOCGEOSRV (Server)	Wed Dec 12 20:23:27 2018
	Sweep is finished
	Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB" 
	OIT 944337972, OAT 944572476, OST 944572408, Next 944572596

Сейчас я могу подключиться к основной базе и общаться с ней. О целостности самих данных пока что-то сказать сложно.

Насколько серьезны ошибки которые выдались в логе?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747010
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nimarufaНасколько серьезны ошибки которые выдались в логе?

Missing nodes это очень хреново, но легко лечится пересозданием индекса.
Остальные безопасны, но означают, что некоторые данные потерялись в результате резкого
отката транзакции, их создавшей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747039
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nimarufa
Код: plaintext
Index 3 misses node on page 2523460 level 1 in table REC_HEADERS (196)
Нужно пересоздать соотв. индекс (ALTER INDEX .. ACTIVE; COMMIT;)

nimarufa
Код: plaintext
Page 1771984 is an orphan
Безобидно.

nimarufa
Код: plaintext
Relation has 18 orphan backversions (282 in use) in table RDB$TRIGGERS (12)
Безобидно.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747058
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!

Во все-таки основная проблема в том что никто не мог подсоединиться к базе во время этого свипа продолжительное время посреди рабочего дня.
SQL Message: -913
deadlock


ArtDen подсказал сделать принудительный sweep раз в неделю ночью, это сделаю, но хотелось бы узнать из-за чего именно происходил этот злосчастный deadlock...
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747062
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположу, что неконсистентность в системных таблицах какая-то. Свип почему-то хотел убрать версию, которая нужна была какой-то транзакции.
Но, я понял, что рестора после mend так и не последовало, а таки свип смог закончиться после валидации и менда? Чудны дела Твои! Я б таки запланировал бэкап-рестор.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747145
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,

немного не так, свип на основной базе закончился после того как я ей сделал бекап с -g и ничего не трогал, просто до этого основную базу дергали то остановкой сервиса, то перезагрузкой и свип начинался заново, другим невозможно было подключиться (именно подключится, до запросов даже дело не доходило) к базе из-за deadlock.

Менд и валидацию я делал уже на скопированной базе данных. После этого на ней-же я сделал бекап-рестор и уже эту базу запустил в работу.

Сейчас увеличил sweep interval до 60000 и запланирую gbak -sweep два раза в неделю ночью.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747222
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nimarufaСейчас увеличил sweep interval до 60000
автосвип вам надо вообще вырубать, и стартовать его вручную ( в смысле, автоматизировать запуск в ОС
на какое-то вечернее время).
Свип сканирует всю базу, зачем такие случайности нужны во время работы?

nimarufaSOCGEOSRV (Server) Wed Dec 12 19:30:16 2018
Sweep is finished
Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB"
OIT 943086403, OAT 944338117, OST 944337973, Next 944338176


свип не смог подвинуть OIT. И фиг с ним. Вас это так беспокоит? См выше, что автосвип
надо отключать. Потому что он начинает долбить базу:
nimarufaSOCGEOSRV (Server) Wed Dec 12 19:30:16 2018
Sweep is started by SWEEPER
Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB"
OIT 943086403, OAT 944338117, OST 944337973, Next 944338183
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747228
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пр запланированном gfix -sweep интервал для запуска sweep в параметрах базы можно сделать тогда вообще =0.
Чтоб не иметь непредсказуемых запусков sweep с таким критическим просадом по производительности.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747251
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
особенно на супере
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747513
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvсвип не смог подвинуть OIT. И фиг с ним. Вас это так беспокоит?

OIT жеж подвинулся со второго раза:

SOCGEOSRV (Server) Wed Dec 12 19:30:16 2018
Sweep is finished
Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB"
OIT 943086403, OAT 944338117, OST 944337973, Next 944338176


SOCGEOSRV (Server) Wed Dec 12 19:30:16 2018
Sweep is started by SWEEPER
Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB"
OIT 943086403, OAT 944338117, OST 944337973, Next 944338183

.....

SOCGEOSRV (Server) Wed Dec 12 20:23:27 2018
Sweep is finished
Database "D:\RTDATACOLLECTOR\DATABASE\DATABASE.FDB"
OIT 944337972, OAT 944572476, OST 944572408, Next 944572596


Пока он делался, в базе появилось ещё пара сотен тысяч транзакций.
Видимо, есть серьёзные проблемы в ПО по работе с транзакциями.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747678
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

да, не читают же ничего. а если читают, то не понимают.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39747922
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSerПока он делался, в базе появилось ещё пара сотен тысяч транзакций.

Исключено, в это время к базе могли подключиться только клиенты с читающими транзакциями.

Может быть, что с момента начала сааамого первого свипа (в обед или утром) уже после его старта произошла вставка большого количества записей. Тогда да.

После 15:00, уже когда перезагружали сервер и свип заново несколько раз пытался запуститься никаких вставок не было.

Про sweep interval 0 понял, спасибо.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39748016
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nimarufaИсключено, в это время к базе могли подключиться только клиенты с читающими транзакциями.
фантастический ответ. человек говорит про "пару сотен новых транзакций", а вы ему про "НЕТ, подключались только читающие транзакции".
Какая разница?
тут же простая арифметика

SOCGEOSRV (Server) Wed Dec 12 19:30:16 2018
OIT 943086403, OAT 944338117, OST 944337973, Next 944338176
SOCGEOSRV (Server) Wed Dec 12 20:23:27 2018
OIT 944337972, OAT 944572476, OST 944572408, Next 944572596

944572596 - 944338176 = 234420 новых транзакции, и это за 53 минуты. 73 транзакции в секунду.
Тут надо смотреть, сколько при этом пользователей работают, чтобы понять, это естественное, или роботическое.
nimarufaпроизошла вставка большого количества записей. Тогда да.
вставка записей не создает версий. Версии создаются только update и delete. И то, может быть миллион транзакций и 0 версий, или наоборот, 1 транзакция и миллион версий.

Если у вас 234к транзакций в час, то автосвип 100% надо вырубать. И увеличивать автосвип до 60к - это бессмыслица. При упомянутом росте транзакций даже с таким свипом за час автосвип может стартануть 3-4 раза.

В общем, читайте статьи на ibase.ru. если что непонятно - спрашивайте.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39748056
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvПри упомянутом росте транзакций даже с таким свипом за час автосвип может стартануть 3-4 раза.

Не может. Без жёстких откатов - не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39748225
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovБез жёстких откатов - не может.
без них конечно не может. а кто даст гарантию? Я же привожу самый худший вариант. Хрен знает что там у автора в транзакциях делается, или коннекты отрубаются, и т.д.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749105
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот блин, накаркал я поблему. У моих пользователей вылезла та же самая проблема, как и у бывшего коллеги:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
xxxxxxxxx (Server)    Mon Dec 17 05:00:03 2018
        Sweep is started by SYSDBA
        Database "D:\PRIMEDB\DB\PRIME.FBDB"
        OIT 490599, OAT 490600, OST 490600, Next 490601


xxxxxxxxx (Server)    Mon Dec 17 12:10:51 2018
        Database: D:\PRIMEDB\DB\PRIME.FBDB
        deadlock


Сборка мусора запускается скриптом каждую ночь в 5 часов. Предыдущая сборка мусора выглядела так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
xxxxxxxxx (Server)    Sun Dec 16 05:00:05 2018
        Sweep is started by SYSDBA
        Database "D:\PRIMEDB\DB\PRIME.FBDB"
        OIT 489656, OAT 489657, OST 489657, Next 489658


xxxxxxxxx (Server)    Sun Dec 16 05:00:45 2018
        Sweep is finished
        Database "D:\PRIMEDB\DB\PRIME.FBDB"
        OIT 489658, OAT 489658, OST 489658, Next 489659


Иногда встречаются записи в логе, когда сборка идёт целый час, но это редкость:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
xxxxxxxxx (Server)    Thu Dec 13 05:00:04 2018
        Sweep is started by SYSDBA
        Database "D:\PRIMEDB\DB\PRIME.FBDB"
        OIT 448070, OAT 448071, OST 448071, Next 448072


xxxxxxxxx (Server)    Thu Dec 13 06:01:41 2018
        Sweep is finished
        Database "D:\PRIMEDB\DB\PRIME.FBDB"
        OIT 448072, OAT 448072, OST 448072, Next 448073


Народ начинает активно работать с базой примерно с 9-ти часов утра. В логах ПО встречаются примерно такие записи:
Код: plaintext
1.
2.
3.
4.
5.
[09:34:31.812] (tr3492) SERVER: Error '1). SqlState: 40001

Msg: [ODBC Firebird Driver][Firebird]deadlock

SQL=
"select s.name, s.svalue from serv_settings s "' during command execution 'get_serv_options' of client (10.205.33.57)


При этом другие параллельные запросы выполняются, но очень медленно (в скобках время выполнения, в обычном режиме оно не превышает десятков миллисекунд):
Код: plaintext
1.
[09:36:51.713] (tr3500) SERVER: get_log_level_values command stopped (315.16072 sec)
[09:36:51.713] (tr3492) SERVER: get_serv_options command stopped (47.21483 sec)


В какую сторону копать? Как не допустить этот deadlock в будущем?
PS: есть другие организации, которые работают с этим ПО по той же самой схеме. В них проблем не наблюдается. Но в них стоит более старая версия Firebird 2.5.x
PPS: Firebird-2.5.8.27089_0_x64

Что ещё нужно для диагностики?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749111
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут мне ещё сказали, что проблема начала проявляться тоже 12-го числа O_o
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749118
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

ну и где здесь хотя что нибудь указывающее на sweep?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749129
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

В логе firebird нету записи о том, что сборка мусора закончена. Т.е. deadlock произошёл во время сборки мусора. К тому-же непонятно, как простейшие запросы "select s.name, s.svalue from serv_settings s" могут завершится с ошибкой deadlock.

Раньше, если sweep запускался автоматом, максимум, что приходилось терпеть пользователям - это тормоза. deadlock вылез впервые.

Если вкратце то проблемы такие:

1. gfix -sweep, запущенный в 5 утра не завершился без видимых причин к началу рабочего дня.
2. Ближе к 9-ти часов утра простейшие select запросы в базу либо дико тормозили, либо завершались с ошибкой deadlock

К 3-м часам дня глюки внезапно прекратились. Я попросил сисадмина остановить наш сервис (который и обращается к базе) и запустить скрипт, вызывающий gfix -sweep ещё раз. Он отрабатывал почти час. Вот его выхлоп:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Started at 16:10:28,13
gstat -header

Database "D:\PrimeDB\firebird-scripts\..\db\prime.fbdb"
Gstat execution time Mon Dec 17 16:10:28 2018

Database header page information:
	Flags			0
	Checksum		12345
	Generation		492110
	Page size		8192
	ODS version		11.2
	Oldest transaction	490797
	Oldest active		492059
	Oldest snapshot		492059
	Next transaction	492059
	Bumped transaction	1
	Sequence number		0
	Next attachment ID	192
	Implementation ID	26
	Shadow count		0
	Page buffers		0
	Next header page	0
	Database dialect	3
	Creation date		Nov 24, 2011 15:13:38
	Attributes		

    Variable header data:
	*END*
gfix -list
gfix -sweep
gstat -header

Database "D:\PrimeDB\firebird-scripts\..\db\prime.fbdb"
Gstat execution time Mon Dec 17 17:02:39 2018

Database header page information:
	Flags			0
	Checksum		12345
	Generation		492115
	Page size		8192
	ODS version		11.2
	Oldest transaction	492060
	Oldest active		492061
	Oldest snapshot		492061
	Next transaction	492061
	Bumped transaction	1
	Sequence number		0
	Next attachment ID	194
	Implementation ID	26
	Shadow count		0
	Page buffers		0
	Next header page	0
	Database dialect	3
	Creation date		Nov 24, 2011 15:13:38
	Attributes		

    Variable header data:
	*END*
gfix -list
Ended at 17:02:40,80
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749130
nimarufa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изначально проблема-то не в свипе была, а в дедлоке.
Ну запустился свип, ничего страшного, он не блокирует базу, просто начинаются тормоза потому что он шерстит ее всю. В процессе этого почему-то начал вылазить дедлок, а потом уже даже при простом коннекте к базе.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749133
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS: перед gfix -sweep, который выполнили, когда тормоза закончились, перезапустил сервис FB
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при свипе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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