powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при свипе
79 сообщений из 79, показаны все 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
deadlock при свипе
    #39749139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenнепонятно, как простейшие запросы "select s.name, s.svalue from serv_settings s" могут
завершится с ошибкой deadlock.

Легко если какой-то чудак запускает их в транзакции с флагами READ COMMITTED NO RECORD
VERSION, что, к сожалению, является умолчанием в некоторых драйверах доступа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749142
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Сейчас посмотрел код. Для ODBC, через который происходит работа с FB, стоит:
Код: plaintext
1.
2.
	retcode = dll_.SQLSetConnectAttrA(hdbc_, SQL_TXN_ISOLATION_OPTION, (SQLPOINTER)SQL_TXN_SERIALIZABLE, SQL_IS_UINTEGER);
	check_odbc_ret_code(dll_, retcode, hdbc_, SQL_HANDLE_DBC);


Но у меня сейчас начинают закрадываться сомнения, что Odbc-драйвер в действительности ставит уровень Serializable...
Ну и на самом деле мне бы хватило за глаза Repeatable read )) Сейчас уже не вспомню зачем он мне понадобился
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749143
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если верить исходнику ODBC-драйвера, то для SQL_TXN_SERIALIZABLE он выставляет isc_tpb_consistency перед запуском транзакции
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749144
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это могло вызывать вышеуказанные у меня (не у nimarufa) эффекты?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749148
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenон выставляет isc_tpb_consistency

Это слишком сурово. О конкретных последствиях я даже и не скажу, тут Влад нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749163
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, вспомнил почему там стоит SQL_TXN_SERIALIZABLE. Он был оставлен так около 10-ти лет назад т.к. когда всё это писалось, выяснилось, что ODBC-драйвер для любой константы устанавливал уровень Read Commited. Я тогда не стал заводить Issue, т.к. нашёл уже заведённый, а потом вся эта фигня была успешно забыта )))
Сейчас проверил, MON$ISOLATION_MODE показывает 2 (2 - read committed record version из https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref-appx05-transacs.html), т.е. баг так и остался.
Так что реальный уровень транзакций - read committed record version.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749165
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное нафик надо выбросить использование ODBC для FB. Тем более что для других СУБД, с которыми работает система, написаны коннекторы через родное API. Но это так уже к слову пришлось. И в данной теме это оффтопик ))
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749167
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

онлайн валидацией не балуетесь ?
Какая архитектура сервера ?
Как часто это повторяется ?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749172
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) нет (а надо?)
2) супер
3) deadlock при select конкретно в этом ПО вижу за всё время в первый раз. Правда, один раз было в другом ПО (которое писал для другого работодателя) что при пересчёте статистики индекса выскочил deadlock, который затем вылазил при любом запросе на всех клиентах. Вылечилось перезапуском FB. Писал об этом тут: https://www.sql.ru/forum/1251138/
Но сегодня deadlock выскакивал не на всех запросах. Часть просто дико тормозило. Встроенный в ПО профайлер выдавал в лог, что длительность выполнения запросов и последующего коммита, могло достигать часа.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749253
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Позвонили, что эта фигня опять началась. Еду в организацию что там в первую очередь посмотреть с базой?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749277
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

трейс запусти, включи там всё, особенно log_errors, log_sweep, дай ему минут 10 поработать хотя бы.
И лог сохрани.
Снимок таблиц мониторинга тоже не помешает.
fb_lock_print -a
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749321
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDengfix -list
я не понял, вы двухфазным коммитом пользуетесь? Иначе зачем эти бессмысленные телодвижения?
снимать надо было fb_lock_print, а не gfix -list почем зря два раза тыкать.

Кроме того, deadlock в логе ФБ и deadlock в логе какого-то там ODBC это абсолютно разные вещи. deadlock в firebird.log относится к блокировкам страниц, а не записей.

Встречный вопрос - у вас там DDL случайно на ходу не выполняется?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749370
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,
В этот раз я просто проверил скорость диска (т.к. жалобы были именно на дикие тормоза). Так вот, скорость последовательного чтения - менее 3 Мб/сек (до проверки скорости случайного доступа дело даже не дошло). При этом диск не загружен ничем другим. Сисадмин пока не может разобраться в чём именно дело. Так что ему сейчас особо не до запуска трейса. Он что-то там копает в настройках виртуализации.
Кстати, возможно вчера и на прошлой недели тоже были резкие проседания в скорости диска. Это как-то могло вызвать проблему?

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

PS: в прошлый раз я поехал туда не подготовленным, т.к. мне вообще не сказали в чём проблема. Наша система большая. База данных - это только небольшая часть системы. Не думал вообще, что ей придётся заниматься. Так что пришлось довольствоваться теми готовыми bat-скриптами для сисадмина, которые были в наличии.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749373
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
насчёт DDL не понял.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749376
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И всё-таки повторю вопрос. В каких случаях возможен ответ сервера "deadlock" при простейших select-запросах? Можно что у нас надо подкрутить?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749380
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenТак вот, скорость последовательного чтения - менее 3 Мб/сек (до проверки скорости случайного доступа дело даже не дошло).
...
Кстати, возможно вчера и на прошлой недели тоже были резкие проседания в скорости диска. Это как-то могло вызвать проблему?Проблему с тормозами запросов - конечно могло.
deadlock при выполнении свипа - прямой связи не вижу, это вообще весьма странно выглядит.


ArtDengfix -list в скрипте сборки мусора вызываться до и после sweep, чтобы видать насколько хорошо этот sweep отработал.А какая связь ? Или таки есть 2PC тр-ции ?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749381
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
18.12.2018 12:27, ArtDen пишет:
> ему сейчас особо не до запуска трейса. Он что-то там копает в настройках виртуализации.

доморощенных виртуальщиков мочить топить в сортире!
превентивно!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749387
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

Ступил. Конкретно gfix -list подсмотрел в какой-то рекомендации, уведенной в инете ))))
Я так понимаю, оно особо там не нужно?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749392
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

оно не мешает, просто вызывает удивление
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749404
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenВ этот раз я просто проверил скорость диска (т.к. жалобы были именно на дикие тормоза). Так вот, скорость последовательного чтения - менее 3 Мб/сек (до проверки скорости случайного доступа дело даже не дошло). При этом диск не загружен ничем другим. Сисадмин пока не может разобраться в чём именно дело. Так что ему сейчас особо не до запуска трейса. Он что-то там копает в настройках виртуализации.


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

К сожалению, нормально поладить с сиадмином не получается. Всё что удалось выяснить, я выкладываю тут.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749463
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
18.12.2018 13:49, ArtDen пишет:

> К сожалению, нормально поладить с сиадмином не получается
> Всё что удалось выяснить, я выкладываю тут.

боюсь, в этом случае всё сведётся к постулатам от сисадмина
на тему того, что "ВАША программа - говно"...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749502
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Он мне сегодня сказал это прямо дословно, только добавил слово "полное" перед "говно" ))) Но это уже оффтоп пошёл. В общем, в данной организации нам не повезло с сисадмином. Но проблему решить надо в любом случае.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749524
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenОн мне сегодня сказал это прямо дословно, только добавил слово "полное" перед "говно" )))

И вполне возможно, что он прав, без результатов трассировки и аудита мы этого не узнаем.
Но это не отменяет факта, что именно у него диск выдаёт скорость 3 мегабайта в секунду.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749531
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я готов согласиться даже на то, что наше ПО - трижды говно, лишь бы выяснить в чём проблема и справить ситуацию )
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749537
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenЯ готов согласиться даже на то, что наше ПО - трижды говно, лишь бы выяснить в чём
проблема и справить ситуацию )

Ну так начни уже с
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306610&msg=21766644
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749556
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Начну конечно. Но всё зависит от настроения сисадмина. Так что это точно будет не сегодня (
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749559
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenНо всё зависит от настроения сисадмина.

У тебя что, нет удалённого доступа к серверу по SSH?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749561
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для чего делать sweep при отсутствии разницы между OIT и NEXT? Может сперва анализировать вывод gstat и при наличии разницы более 20000 запускать sweep?
Сборка мусора итак должна выполняться, безо всякого sweep (используется же SuperServer)...
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749573
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Доступа нет и не будет. Что-либо делать с сервером можно только при личном контакте с сисадмином. Логи смотрю сбоку на экране )))) Не по телефону, ни по почте он не реагирует. Вот такая жопа.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749577
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenВот такая жопа.

Это единственный пользователь твоей программы?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749600
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, просто для остальных пользователей все ошибка одинаковы: "Красный крест и что-то написано"
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749678
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenЧто-либо делать с сервером можно только при личном контакте с сисадмином. Логи смотрю сбоку на экране ))))
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
fbsvcmgr хост/порт:service_mgr info_server_version info_capabilities -z
Firebird Services Manager version WI-V3.0.4.33054 Firebird 3.0
Server version: WI-V2.5.8.27089 Firebird 2.5
Server capabilities:
  REMOTE_HOP_SUPPORT
  NO_SERVER_SHUTDOWN_SUPPORT

fbsvcmgr хост/порт:service_mgr action_get_fb_log -z
Firebird Services Manager version WI-V3.0.4.33054 Firebird 3.0
### Manualy added into firebird.log ###

P.S.
"NO_SERVER_SHUTDOWN_SUPPORT" - классик или суперклассик.
"MULTI_CLIENT_SUPPORT" - суперсервер.

Из ограничений:
На FB1.5 сервисные запросы (кроме информационных) работают только в режиме SuperServer.
Classic запускает реальные приложения (gbak/gfix/итд).
Приложения "отправить firebird.log" - не существует.

На FB2.1 и FB2.5 сервисные запросы (кроме информационных) могут давать ошибку, если используется "чужая" версия fbsvcmgr.
Функционал "родных" fbsvcmgr на этих версиях ограничен.

"gbak -se" и "fbsvcmgr action_backup/_restore" отличаются "на опции перенаправлений": gbak передаёт имя файла протокола и с ним работает сервер, fbsvcmgr читает вывод, который ему отправляет сервер.
В результате, fbsvcmgr не позволяет включать протоколирование, когда используются stdin/stdout для файла бэкапа.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749709
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

делается достаточно просто. на их системе замеряете время выполнения какого-нибудь запроса, идеально в монопольном режиме.
И замеряете такой же запрос у себя на десктопе. После чего вывод на лист А4, печать и подпись. Если админ не реагирует, то тогда их начальству. С админом, конечно, отношения будут испорчены, но в данном случае, видимо, всё равно, испорчены они или нет.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749782
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для трейса такой конфиг сойдёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
enabled                true 
print_plan             true 
print_perf             true 
print_blr              true 
log_connections        true 
log_transactions       true 
log_sweep              true 
log_errors             true 
log_statement_prepare  true 
log_statement_free     true 
log_statement_start    true 
log_statement_finish   true 
log_blr_requests       true 
max_sql_length         65535 
?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749783
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Если бы была возможность как-то повлиять на сисадмина, мы бы уже повлияли ))
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749801
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenЕсли бы была возможность как-то повлиять на сисадмина, мы бы уже повлияли ))

Если это не твой единственный пользователь, то трассировку и прочие диагностические
операции ты можешь начать делать уже сейчас с тем, у кого админ сговорчивее. Чисто чтобы
понять "а нельзя ли и в самом деле твоё приложение улучшить".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749804
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запуск трассировки и получение результата не требует доступа на консоль сервера.
Эту и многие другие задачи можно выполнять никак не беспокоя админа.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749825
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

это лишнее
ArtDen
Код: plaintext
1.
2.
3.
4.
print_plan             true 
print_blr              true 
log_statement_free     true 
log_statement_start    true
log_blr_requests       true 

Ещё можно подумать про time_threshold и print_perf
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749833
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, Basil A. Sidorov,

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

PS: прямого доступа к базе у пользователя нету. Это трёхзвенка. К базе можно подключится только локально. Но надо подумать, что возможно дадут доступ к порту 3050 для некоторых пользователей снаружи, чтобы мы поменьше нагружали админа.

PPS: причина тормозов вроде понятна - глюки в виртуализации, которые приводят к очень сильно просадке скорости дисков. Меня интересует deadlock, которым заканчивается выполнение некоторых запросов.

hvlad,
какой поставить time_threshold ?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749838
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenпрямого доступа к базе у пользователя нету. Это трёхзвенкаНо разрабатываете её вы?
Запросите доступ к серверу приложения - в какой-то мере это ваша епархия.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749844
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenВ других организациях трассировка периодически запускается в случае, если есть претензии
на некоторое подтормаживание. И она реально помогает (мы или перестраиваем запросы или
химичим с индексами).

Значит у тебя должны быть достаточно много достаточно свежих трасс в которых ты можешь
точно посмотреть параметры стартующих транзакций, в особенности тех, в которых стартуют
запросы, обламывающиеся (у других) с дедлоком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749855
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Я тут приводил пример запроса, который заканчивается дэдлоком:

Код: sql
1.
select s.name, s.svalue from serv_settings s



serv_settings - это таблица с двумя колонками, которая содержит 3 или 4 записи в виде key->value (name - это key, svalue - это типа value). Она была заполнена один раз при установке ПО. И она никогда не меняется.
При подключении клиента к нашему серваку, этот запрос выполняется первым. В других организациях этот запрос выполняется так быстро, что не попадает в лог трейса, т.к. у нас стоит time_threshold 1000 (запросы, которые длятся более секунды считаются тормозящими). Так что мне нечего тебе показать ))

В общем-то дэдлок у меня вообще не вяжется с select-ом.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749871
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenТак что мне нечего тебе показать ))

А я и не говорил "мне показать". Я сказал "тебе посмотреть". И ещё сказал, что самое время
выбрать пользователя с админом посговорчивее и снять-таки полную трассу твоего приложения
чтобы было в чём покопаться на досуге.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749881
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

deadlock при таком запросе, если serv_settings это просто таблица, а не процедура которая что-то там вставляет или модифицирует, может быть только если уровень изолированности read_committed no_rec_version. Так что надо трейс смотреть.
Вы же его сами можете посмотреть у себя, не обязательно у клиента.
Или у вас клиенты сами ставят древние ODBC-драйвера, у которых no_rec_version?
deadlock, который пишется в firebird.log - это другое. Это скорее всего что-то в памяти локов поломалось.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749904
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Это я успел посмотреть ещё на работе. Вот:
Код: 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.
Statement 331266:
-------------------------------------------------------------------------------
select s.name, s.svalue from serv_settings s 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (S NATURAL)

2018-12-18T21:09:40.3100 (680:00000000011CBDD8) START_TRANSACTION
	D:\PRIMEDB32\DB\PRIME.FBDB (ATT_73, SYSDBA:NONE, UTF8, TCPv4:127.0.0.1)
	D:\PrimeDB32\PrimeDB.exe:8756
		(TRA_11360, READ_COMMITTED | REC_VERSION | WAIT | READ_WRITE)

2018-12-18T21:09:40.3450 (680:00000000011CBDD8) PREPARE_STATEMENT
	D:\PRIMEDB32\DB\PRIME.FBDB (ATT_73, SYSDBA:NONE, UTF8, TCPv4:127.0.0.1)
	D:\PrimeDB32\PrimeDB.exe:8756
		(TRA_11360, READ_COMMITTED | REC_VERSION | WAIT | READ_WRITE)

Statement 331290:
-------------------------------------------------------------------------------
select s.name, s.svalue from serv_settings s 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (S NATURAL)
      0 ms

2018-12-18T21:09:40.3460 (680:00000000011CBDD8) EXECUTE_STATEMENT_START
	D:\PRIMEDB32\DB\PRIME.FBDB (ATT_73, SYSDBA:NONE, UTF8, TCPv4:127.0.0.1)
	D:\PrimeDB32\PrimeDB.exe:8756
		(TRA_11360, READ_COMMITTED | REC_VERSION | WAIT | READ_WRITE)

Statement 331290:
-------------------------------------------------------------------------------
select s.name, s.svalue from serv_settings s 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (S NATURAL)

2018-12-18T21:09:40.3490 (680:00000000011CBDD8) CLOSE_CURSOR
	D:\PRIMEDB32\DB\PRIME.FBDB (ATT_73, SYSDBA:NONE, UTF8, TCPv4:127.0.0.1)
	D:\PrimeDB32\PrimeDB.exe:8756

Statement 331290:
-------------------------------------------------------------------------------
select s.name, s.svalue from serv_settings s 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (S NATURAL)

2018-12-18T21:09:40.3490 (680:00000000011CBDD8) COMMIT_TRANSACTION
	D:\PRIMEDB32\DB\PRIME.FBDB (ATT_73, SYSDBA:NONE, UTF8, TCPv4:127.0.0.1)
	D:\PrimeDB32\PrimeDB.exe:8756
		(TRA_11360, READ_COMMITTED | REC_VERSION | WAIT | READ_WRITE)
      0 ms, 1 write(s), 1 fetch(es), 1 mark(s)

2018-12-18T21:09:47.6080 (680:00000000011CD870) TRACE_INIT
	SESSION_4 PrimeDbTrace
	

2018-12-18T21:09:47.6080 (680:00000000011CD870) FREE_STATEMENT
	D:\PRIMEDB32\DB\PRIME.FBDB (ATT_75, SYSDBA:NONE, UTF8, TCPv4:127.0.0.1)
	D:\PrimeDB32\PrimeDB.exe:8756

Там куча отладочной выдачи, т.к. там лишние флаги для трейсов указаны.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749905
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это выдача трейса с моего компа при тестировании скрипта, запускающего трейс для сисадмина )
...
Рейтинг: 0 / 0
deadlock при свипе
    #39749922
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSerА для чего делать sweep при отсутствии разницы между OIT и NEXT? Может сперва анализировать вывод gstat и при наличии разницы более 20000 запускать sweep?


А зачем сакральная привязка к значению 20000?
То что это значение по дефолту не означает что в этом велкий смысл.
Опять, таки, это значение по дефолту для автозапуска свипа, т.е. если цифра больше этой установки - то он и сам запустится.

Более интересный вопрос - если там разрыв транзакций более 20000 - может быть как раз запускать свип и не нужно, ибо толка может и не быть, а вред в виде тормозов - может быть. В моем случае, для борьбы с большими разрывами (бывало по 200-300 тысяч) помогало найти коннект из которого запущена та самая старая транзакция и закрыть его. Разрыв тут же значительно уменьшался.
А после того как в приложении переделал работу с транзакциями - обычный разрыв находится в диапазоне до нескольких сотен. Не более.

Автосвип у меня отключен, запускается по ночам принудительно.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750028
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

всё неправильно.
- "разрывы" бывают разные. Самый больной разрыв для "неуборки мусора" - Next - OAT, т.е. наличие длинной АКТИВНОЙ транзакции. Никакой свип тут не действует, и не будет, нельзя убрать версии, которые не стали мусором.

- авто-sweep по умолчанию 20000. Это разница между OIT и OST. Застревание OIT является индикатором того, что эта транзакция является самой старой, завершившейся по Rollback. То есть, ни в каких коннектах она фигурировать не может, она уже завершилась, и принудительное завершение коннекта никак не даст возможности серверу подвину OIT.

- застревание OIT НЕ означает, что в базе есть мусор. Я постоянно талдычу, что миллион транзакций может ничего не обновлять (не генерировать версии), а одна транзакция может создать миллион версий. sweep этого не знает, и всё равно будет сканировать всю БД.

- застревание OIT влияет не только на срабатывание авто-свипа (если он не 0), но и на объем памяти, который аллокируют транзакции snapshot. Такие транзакции копируют в свою локальную память все состояния транзакций от OIT до Next. Но, 1 миллион транзакций в TIP от OIT до Next займет 250 килобайт (четверть от количества транзакций).

И, наконец, значение автосвипа в 20000 было установлено по умолчанию как минимум лет 20-25 назад. С тех пор количество транзакций в сутки существенно увеличилось. Но это не значит, что поэтому авто-свип можно увеличить в 10-100 раз. Объемы баз данных с тех пор существенно увеличились, поэтому запуск авто-свипа в произвольный момент сейчас фактически недопустим, если вы не хотите, чтобы сервер ВДРУГ посередине рабочего дня начал сканировать всю базу в 200 гиг на предмет уборки мусора.
Поэтому свип надо настраивать по расписанию.

Тем не менее, в ФБ 3 у страниц данных есть флаг swept, то есть, свип теперь проскакивает быстрее, что ручной, что авто.
А в ФБ 4 меняется сборка мусора, позволяющая "выкусывать" мусор из цепочек версий, чего раньше не делалось.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750030
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

есть вопросы:
- если это не ODBC, тогда почему чтение этих данных идет в read write, а не в read only?
- если это таблица, которую долбят сотни коннектов, то надо проверять fb_lock_print, нет-ли там
повышенного mutex wait.
оптимизировать в этом запросе нечего, увы.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750118
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Так это как раз ODBC. ODBC тупой и не позволяет указывать, что транзакция read-only. Точнее сказать, он вообще не позволяет вручную начать транзакцию. Выполнение любого запроса автоматом начинает транзакцию, которая продолжается до вызова SQLEndTran.

Количество коннектов к базе всегда фиксировано (15-20 в зависимости от конфигурации) и не зависит от количества пользователей. К этой таблице долбятся только при первом подключении. Это не более нескольких сотен запросов в сутки.

В общем, ситуация на месте такая: сисадмин не разобрался в чём проблема, но диск самопроизвольно ускорился раз в 60 )) Когда скорость диска нормальная, то не наблюдается проблем ни с тормозами, ни с deadlock-ом. Имеет смысл запускать трейс в этой ситуации?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750135
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvвсё неправильно.
...


Спасибо! Поставлю в рамочку! :)
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750137
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenсисадмин не разобрался в чём проблема, но диск самопроизвольно ускорился раз в 60Батарейка в рейде зарядилась ? :)

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

Простой deadlock, без дополнительных кодов ошибки, означает либо ошибку в программе, которая показывает
статус-вектор (говорили об этом в прошлый раз), либо что-то уж совсем необычное (и неправильное) в движке.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750146
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

Кстати, да. Возможно что и в случае с ODBC я не правильно инфу об ошибке вытаскиваю и она вытаскивается не вся:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
void check_odbc_ret_code(const OdbcDll &dll, SQLRETURN ret_code, SQLHANDLE handle, SQLSMALLINT type, const wchar_t *sql = nullptr)
{
	if ((ret_code == SQL_SUCCESS) || (ret_code == SQL_SUCCESS_WITH_INFO) || (ret_code == SQL_NO_DATA)) return;

	char        SqlState[6] = { 0 };
	char        Msg[SQL_MAX_MESSAGE_LENGTH] = { 0 };
	SQLINTEGER  NativeError = 0;
	SQLSMALLINT MsgLen = 0;
	SQLRETURN   rc = 0;
	lib::StringBuilder text;
	std::wstring sql_state;

	for (int i = 1;; i++)
	{
		rc = dll.SQLGetDiagRecA(type, handle, i, (SQLCHAR*)SqlState, &NativeError, (SQLCHAR*)Msg, SQL_MAX_MESSAGE_LENGTH, &MsgLen);
		if (rc != SQL_SUCCESS) break;
		text << i << L"). " << L"SqlState: " << lib::utf8_to_wstr(SqlState) << L"\n\nMsg: " << lib::utf8_to_wstr(Msg) << L"\n";
		if (sql_state.empty()) sql_state = lib::utf8_to_wstr(SqlState);
	}
...


Есть тут спецы по ODBC?
...
Рейтинг: 0 / 0
79 сообщений из 79, показаны все 4 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при свипе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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