Запоздалое письмо Деду Морозу

Дедушка Мороз, подари мне на Старый Новый Год дополнительные два четыре террабайта свободного пространства на диске 🙂

После оптимизации алгоритмов (вместо select/delete одиночных записей, загружаются/удаляются группы записей) и прикручивания к тестовой системе пула подключений, её база данных стала пухнуть прямо на глазах. Если раньше 6.4 млн тестов за восемь дней создавали базу, размер которой можно было игнорировать, то сейчас 1.5 млн за сутки породили базу размером 418 гиг, которая съела всё место на разделе.


Свойства файла тестовой базы данных

База внутри, можно считать, абсолютно пустая — размер бакапа меньше 5 мегабайт. Статистика базы:

Database «d:\database\ibp_test_fb25_d3.gdb»
Database header page information:
Flags 0
Checksum 12345
Generation 46450872
Page size 8192
ODS version 11.2
Oldest transaction 46362483
Oldest active 46364016
Oldest snapshot 46364016
Next transaction 46384271
Bumped transaction 1
Sequence number 0
Next attachment ID 66599
Implementation ID 26
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Jan 1, 2013 12:06:58
Attributes

Variable header data:
*END*

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

3 комментария

Kovalenko  on 1 марта, 2013

Сегодня «изучал» (то есть, тупо смотрел на) файл базы данных, после двух последовательных прогонов 1.2 млн тестов (пропускались через 8 параллельных потоков). Каждый прогон давал +180GB к размеру базы. То есть в конце получилась база ~360GB. Была мысль, что при втором прогоне сборщик мусора получит шанс. Не получил. Статистика базы

Database «d:\database\IBP_TEST_FB25_D3.GDB»
Database header page information:
Flags 0
Checksum 12345
Generation 90568273
Page size 8192
ODS version 11.2
Oldest transaction 90544254
Oldest active 90544255
Oldest snapshot 90544255
Next transaction 90544257
Bumped transaction 1
Sequence number 0
Next attachment ID 24014
Implementation ID 26
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Feb 22, 2013 9:25:56
Attributes

Variable header data:
*END*

Sweep Interval — по-умолчанию, 20000.

—-
База внутри практически пустая. Бакап меньше 2MB.

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

Ну, полтора месяца — это не срок для такого рода проблемы. Главное её обозначить. И, рано или поздно, причина будет найдена. Связываться с наращиванием дисковой подсистемы — вообще не тянет. От одной мысли об этом — тянет спать.

Firebird и закон сохранения  on 7 апреля, 2013

[…] тесты выполнялись в конце ноября 2012 года. Но из-за вот этого, пришлось временно забыть про это маленькое […]

Выпущен IBProvider 3.16.1 [сборка 15012].  on 14 мая, 2013

[…] Прикручен пул подключений к тестовой системе […]

Leave a Comment