powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Затормаживается старт транзакции
25 сообщений из 46, страница 1 из 2
Затормаживается старт транзакции
    #40073260
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поставил 3.0.5 на Debian Linux, наблюдаю периодическое торможение старта транзакции.

Сервер:
Linux db 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux
по железу хилый, но по мониторингу загрузка ЦП и дисков низкая; и я бы еще понял тормоза при выполнении запроса, но старт?
памяти 2,7 Гб свободно
Код: sql
1.
2.
3.
              total        used        free      shared  buff/cache   available
Mem:        4041652      495636     2778952       25772      767064     3272828
Swap:             0           0           0



FB:
3.0.5 из пакета
конфиг - стандартный

База:
~100 Мб - оперативная очередь записей (телеметрия)
~5 писателей, 20 читателей (половина read read committed, половина read snapshot).
транзакции завершаются сразу после запроса, в сумме ~80 тр/сек, OIT не отстает
был триггер на старт транзакции (простой, несколько rdb$get_context и проверок текущих параметров), но сделал его inactive
чистка старых записей выполняется по счетчику коннектами писателей. Каждую вставку дергается счетчик (генератор). В среднем чистка выходит примерно каждые 2 сек.
page size = 16384, FW=off, pages buffers = 2048

Клиент:
прога на Delphi под Windows, IBX, клиентская либа от 3-ки

Периодически (3-4 раза за 10 минут) старт транзакции превышает 600 мс (до 3-4 секунд), причем даже для читающего read read committed соединения!

Подскажите, плиз, куда копать. Была версия, что это конкуренция за страницу со счетчиком транзакций или за генераторы, но как это выяснить - неизвестно. Я бы вообще всю базу в кеш запихал, но на дефолтных настройках это порядка 30 Мб, что, в общем-то, треть базы и должно включать все "горячие" записи.
На сервере с Windows старичок 2.5 крутится с большей нагрузкой, включая udf логов на каждое обращение, правда, на RAM drive, и не имеет таких проблем.

fb_lock_print:
LOCK_HEADER BLOCK
Version: 146, Creation timestamp: 2021-05-26 14:22:37
Active owner: 0, Length: 1048576, Used: 281944
Enqs: 667793, Converts: 25, Rejects: 484395, Blocks: 0
Deadlock scans: 0, Deadlocks: 0, Scan interval: 10
Acquires: 877611, Acquire blocks: 317, Spin count: 0
Mutex wait: 0.0%
Hash slots: 8191, Hash lengths (min/avg/max): 0/ 0/ 4
Remove node: 0, Insert queue: 0, Insert prior: 0
Owners (27): forward: 78400, backward: 271024
Free owners: *empty*
Free locks (22): forward: 79112, backward: 245128
Free requests (14): forward: 274232, backward: 281080
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073266
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gstat:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Database header page information:
        Flags                   0
        Generation              55541707
        System Change Number    0
        Page size               16384
        ODS version             12.0
        Oldest transaction      398573877
        Oldest active           398573878
        Oldest snapshot         398573878
        Next transaction        398597261
        Sequence number         0
        Next attachment ID      263
        Implementation          HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Apr 4, 2021 21:16:22
        Attributes

    Variable header data:
        Sweep interval:         5000
        *END*
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073267
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

в логе нет ли постоянных записей об свипе ?
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073269
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
26.05.2021 18:41, Fr0sT-Brutal пишет:
> Sweep interval: 5000

чо-то как-то нафига так то?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073273
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
Fr0sT-Brutal,

в логе нет ли постоянных записей об свипе ?

Последний от 16 апреля, и то это какая-то флуктуация, база 24/7 в работе...
Мимопроходящий

26.05.2021 18:41, Fr0sT-Brutal пишет:
> Sweep interval: 5000

чо-то как-то нафига так то?

Мало или много? Дефолт при создании через isql :) да и в моем случае разница даже в 500 - уже повод беспокоиться.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073276
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalМало или много? Дефолт при создании через isql :)

Дефолт 20000 вообще-то...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073288
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Fr0sT-BrutalМало или много? Дефолт при создании через isql :)

Дефолт 20000 вообще-то...

А, все верно. Создание из скрипта у меня только обкатывается, на боевой машине база скопирована из сервера на Windows, а там по каким-то историческим причинам 5т
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073294
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

господи. Вы учитывайте, что InterBase был придуман 35 лет назад, и подавляющее большинство дефолтных параметров устарели черт знает как, и вплоть до сейчас их надо в основном УВЕЛИЧИВАТЬ.
Не было 30 лет назад систем с миллионами транзакций в сутки, а у вас их 7 миллионов. Поэтому дефолтный sweep interval это всего 20к. А ставить его 5к - это вообще издевательство. Это задолбать базу свипом.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073296
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvНе было 30 лет назад систем с миллионами транзакций в сутки, а у вас их 7 миллионов.
Поэтому дефолтный sweep interval это всего 20к. А ставить его 5к - это вообще
издевательство. Это задолбать базу свипом.

Sweep делается не "каждые <sweep interval> транзакций". Видишь же, последний раз он у
автора сработал только в апреле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073302
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

видимо, у него роллбэки редко случаются.
У нас с тобой давние разногласия про свип, так что давай не будем.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073520
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
господи. Вы учитывайте, что InterBase был придуман 35 лет назад, и подавляющее большинство дефолтных параметров устарели черт знает как, и вплоть до сейчас их надо в основном УВЕЛИЧИВАТЬ.
Не было 30 лет назад систем с миллионами транзакций в сутки, а у вас их 7 миллионов. Поэтому дефолтный sweep interval это всего 20к. А ставить его 5к - это вообще издевательство. Это задолбать базу свипом.

Не, ну если бы свип часто происходил, то конечно я бы значение подправил :) но в моей схеме это крайне редкое событие, т.ч. роли не играет.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073530
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

ага, конечно. ты бы в лог смотрел регулярно (про свип), и всё такое. Нефиг дурные параметры ставить, а потом еще их оправдывать "потому что у меня так не бывает". Сегодня нет, а завтра роллбэк случится. Сегодня 10 юзеров, а завтра 100. База 10 гиг, а завтра 100 гиг. Не надо привыкать к плохому и неправильному.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073533
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvСегодня нет, а завтра роллбэк случится.

Роллбэк для этого нужен жёсткий, уровня падения сервера. Иначе он незаметно для себя
превратится в коммит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073546
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

роллбэк = застревание OIT. Я это имею в виду. Роллбэк можно соорудить разными способами
- ins/upd/del всякого тыщ на 80 записей, потом роллбэк
- коннект с np_auto_undo, ничего не делать и роллбэк
- убить процесс на классике (зависший или работающий).
ну и еще что-то там.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073563
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvРоллбэк можно соорудить разными способами- ins/upd/del всякого тыщ на 80
записей, потом роллбэк- коннект с np_auto_undo, ничего не делать и роллбэк- убить процесс
на классике (зависший или работающий).
Всё это требует совершенно невменяемого разработчика.

И даже в этом случае мелкий sweep interval выгоднее чтобы база не успела зарасти мусором и
свип прошёл быстро и безболезненно. Особенно для тройки и четвёрки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073580
Sergey A. Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal,
посмотрите в /tmp/firebird на наличие больших файлов блокировок/трассировок.
Если смонтировать /tmp в tmpfs ускорит работу с lock-таблицами. Но при этом учесть, что там также создаются файлы сортировок, блобы, временные таблицы.

Так же посмотрите с security.fdb все в порядке (sweep, транзакции и т.д.), про неё забывают, а при подключении к ней всегда идет обращение.

Если на классике, то посмотрите не накапливаются процессы от отвалившихся клиентов. Не активные процессы могут вытеснятся в swap, а при подключении загружаться обратно. На супере не так критично.

Ещё как-то встречал, что тормозило на syslog, т.к. он синхронно сообщения писал.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073607
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для чистоты эксперимента наваял тестер на основе isql
check.bat
Код: sql
1.
2.
3.
...
call gensql.bat | isql -user ... -password ... -role ... server:alias
...



gensql.bat
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
@ECHO OFF 

SETLOCAL

echo commit;
:Loop
	title %time%
	set starttick=
	for /f %%s in ('checktime start') do set starttick=%%s

	echo set transaction wait READ ONLY;
	echo select count(*) from PR_GET('lala', 0, 0);
	echo commit;
	
	set check=
	for /f %%s in ('checktime check %starttick% 300') do set check=%%s
	if defined check (
		echo %time% %check% >> delays.log
	)
	sleep 50
	goto :Loop
echo quit;
GOTO :EOF



Долбит каждые 50 мсек по транзакции, задержки свыше 300 мс пишет в лог

16:49:13.08 1016
16:49:16.07 406
16:49:20.25 890
16:53:56.04 359
16:55:44.26 359
17:04:17.49 1188
17:08:11.20 1157
17:13:47.09 359

Не так критично, но факт имеет место быть.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073608
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.05.2021 17:24, Fr0sT-Brutal пишет:
> set transaction wait READ ONLY

очень интересно.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073609
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

тут в куче время старта тр-ции, выполнения запроса и коммита.

Навскидку - задержки могут быть как из-за флаша кеша FB (по-умолчанию он не отключен при FW=OFF),
из-за создания и записи новой TIP, из-за сброса кеша OS (он тоже не резиновый и у него есть
свои алгоритмы\критерии чекпойнтов).
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073610
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey A. Volkov

посмотрите в /tmp/firebird на наличие больших файлов блокировок/трассировок.
Если смонтировать /tmp в tmpfs ускорит работу с lock-таблицами. Но при этом учесть, что там также создаются файлы сортировок, блобы, временные таблицы.

Так же посмотрите с security.fdb все в порядке (sweep, транзакции и т.д.), про неё забывают, а при подключении к ней всегда идет обращение.

в /tmp/firebird всего 5 Мб

Хм, /tmp смотнтировать попробую

В security3 вроде все нормально...
Код: sql
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.
>fbstat /var/lib/firebird/3.0/system/security3.fdb

Database "/var/lib/firebird/3.0/system/security3.fdb"
Gstat execution time Thu May 27 14:29:58 2021

Database header page information:
        Flags                   0
        Generation              1616
        System Change Number    0
        Page size               8192
        ODS version             12.0
        Oldest transaction      28161
        Oldest active           28162
        Oldest snapshot         28162
        Next transaction        28162
        Sequence number         0
        Next attachment ID      3333
        Implementation          HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Aug 25, 2020 12:14:06
        Attributes              force write

    Variable header data:
        *END*
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073611
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.05.2021 17:31, Fr0sT-Brutal пишет:
> Attributesforce write

оно тебе точно надо?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073613
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Особенно для тройки и четвёрки
... сделали пометку чистых страниц.
В четвёрке, вроде как, уже и при восстановлении страницы помечаются как чистые.
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073614
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

27.05.2021 17:31, Fr0sT-Brutal пишет:
> Attributesforce write

оно тебе точно надо?

Это ж секурити... тем более тут я точно ничего не менял, как поставилось, так и осталось
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073737
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal, если пнуть подключение к БД с параметром isc_dpb_no_garbage_collect в DPB, задержка проявляется?
...
Рейтинг: 0 / 0
Затормаживается старт транзакции
    #40073766
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_dev
Fr0sT-Brutal, если пнуть подключение к БД с параметром isc_dpb_no_garbage_collect в DPB, задержка проявляется?

Спасибо! попробую.

Тем временем: переделанные согласно верному замечанию kdv тесты на isql вроде бы показывают неплохие задержки (не выше 400 мс), но, возможно, это из-за заведомо пустой выборки. Обложенный таймерами тест на собственной программе показывает задержку на FDatabases[0].GDSLibrary.isc_start_multiple, т.е. это точно не шелуха обертки.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Затормаживается старт транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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