|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Поставил 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.
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 18:32 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 18:41 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, в логе нет ли постоянных записей об свипе ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 18:44 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
26.05.2021 18:41, Fr0sT-Brutal пишет: > Sweep interval: 5000 чо-то как-то нафига так то? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 18:45 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
hvlad Fr0sT-Brutal, в логе нет ли постоянных записей об свипе ? Последний от 16 апреля, и то это какая-то флуктуация, база 24/7 в работе... Мимопроходящий 26.05.2021 18:41, Fr0sT-Brutal пишет: > Sweep interval: 5000 чо-то как-то нафига так то? Мало или много? Дефолт при создании через isql :) да и в моем случае разница даже в 500 - уже повод беспокоиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 19:01 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalМало или много? Дефолт при создании через isql :) Дефолт 20000 вообще-то... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 19:14 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Fr0sT-BrutalМало или много? Дефолт при создании через isql :) Дефолт 20000 вообще-то... А, все верно. Создание из скрипта у меня только обкатывается, на боевой машине база скопирована из сервера на Windows, а там по каким-то историческим причинам 5т ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 19:46 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, господи. Вы учитывайте, что InterBase был придуман 35 лет назад, и подавляющее большинство дефолтных параметров устарели черт знает как, и вплоть до сейчас их надо в основном УВЕЛИЧИВАТЬ. Не было 30 лет назад систем с миллионами транзакций в сутки, а у вас их 7 миллионов. Поэтому дефолтный sweep interval это всего 20к. А ставить его 5к - это вообще издевательство. Это задолбать базу свипом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 20:01 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
kdvНе было 30 лет назад систем с миллионами транзакций в сутки, а у вас их 7 миллионов. Поэтому дефолтный sweep interval это всего 20к. А ставить его 5к - это вообще издевательство. Это задолбать базу свипом. Sweep делается не "каждые <sweep interval> транзакций". Видишь же, последний раз он у автора сработал только в апреле. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 20:07 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, видимо, у него роллбэки редко случаются. У нас с тобой давние разногласия про свип, так что давай не будем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 20:26 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
kdv господи. Вы учитывайте, что InterBase был придуман 35 лет назад, и подавляющее большинство дефолтных параметров устарели черт знает как, и вплоть до сейчас их надо в основном УВЕЛИЧИВАТЬ. Не было 30 лет назад систем с миллионами транзакций в сутки, а у вас их 7 миллионов. Поэтому дефолтный sweep interval это всего 20к. А ставить его 5к - это вообще издевательство. Это задолбать базу свипом. Не, ну если бы свип часто происходил, то конечно я бы значение подправил :) но в моей схеме это крайне редкое событие, т.ч. роли не играет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 14:14 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, ага, конечно. ты бы в лог смотрел регулярно (про свип), и всё такое. Нефиг дурные параметры ставить, а потом еще их оправдывать "потому что у меня так не бывает". Сегодня нет, а завтра роллбэк случится. Сегодня 10 юзеров, а завтра 100. База 10 гиг, а завтра 100 гиг. Не надо привыкать к плохому и неправильному. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 14:38 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
kdvСегодня нет, а завтра роллбэк случится. Роллбэк для этого нужен жёсткий, уровня падения сервера. Иначе он незаметно для себя превратится в коммит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 14:43 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, роллбэк = застревание OIT. Я это имею в виду. Роллбэк можно соорудить разными способами - ins/upd/del всякого тыщ на 80 записей, потом роллбэк - коннект с np_auto_undo, ничего не делать и роллбэк - убить процесс на классике (зависший или работающий). ну и еще что-то там. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 15:06 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
kdvРоллбэк можно соорудить разными способами- ins/upd/del всякого тыщ на 80 записей, потом роллбэк- коннект с np_auto_undo, ничего не делать и роллбэк- убить процесс на классике (зависший или работающий). Всё это требует совершенно невменяемого разработчика. И даже в этом случае мелкий sweep interval выгоднее чтобы база не успела зарасти мусором и свип прошёл быстро и безболезненно. Особенно для тройки и четвёрки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 15:26 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, посмотрите в /tmp/firebird на наличие больших файлов блокировок/трассировок. Если смонтировать /tmp в tmpfs ускорит работу с lock-таблицами. Но при этом учесть, что там также создаются файлы сортировок, блобы, временные таблицы. Так же посмотрите с security.fdb все в порядке (sweep, транзакции и т.д.), про неё забывают, а при подключении к ней всегда идет обращение. Если на классике, то посмотрите не накапливаются процессы от отвалившихся клиентов. Не активные процессы могут вытеснятся в swap, а при подключении загружаться обратно. На супере не так критично. Ещё как-то встречал, что тормозило на syslog, т.к. он синхронно сообщения писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 15:49 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Для чистоты эксперимента наваял тестер на основе isql check.bat Код: sql 1. 2. 3.
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.
Долбит каждые 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 Не так критично, но факт имеет место быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:24 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
27.05.2021 17:24, Fr0sT-Brutal пишет: > set transaction wait READ ONLY очень интересно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:27 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, тут в куче время старта тр-ции, выполнения запроса и коммита. Навскидку - задержки могут быть как из-за флаша кеша FB (по-умолчанию он не отключен при FW=OFF), из-за создания и записи новой TIP, из-за сброса кеша OS (он тоже не резиновый и у него есть свои алгоритмы\критерии чекпойнтов). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:30 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:31 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
27.05.2021 17:31, Fr0sT-Brutal пишет: > Attributesforce write оно тебе точно надо? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:34 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Особенно для тройки и четвёрки В четвёрке, вроде как, уже и при восстановлении страницы помечаются как чистые. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:37 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Мимопроходящий 27.05.2021 17:31, Fr0sT-Brutal пишет: > Attributesforce write оно тебе точно надо? Это ж секурити... тем более тут я точно ничего не менял, как поставилось, так и осталось ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:39 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, если пнуть подключение к БД с параметром isc_dpb_no_garbage_collect в DPB, задержка проявляется? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 10:11 |
|
Затормаживается старт транзакции
|
|||
---|---|---|---|
#18+
rdb_dev Fr0sT-Brutal, если пнуть подключение к БД с параметром isc_dpb_no_garbage_collect в DPB, задержка проявляется? Спасибо! попробую. Тем временем: переделанные согласно верному замечанию kdv тесты на isql вроде бы показывают неплохие задержки (не выше 400 мс), но, возможно, это из-за заведомо пустой выборки. Обложенный таймерами тест на собственной программе показывает задержку на FDatabases[0].GDSLibrary.isc_start_multiple, т.е. это точно не шелуха обертки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 11:35 |
|
|
start [/forum/topic.php?fid=40&msg=40073610&tid=1559997]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 163ms |
0 / 0 |