|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
Есть база объемом 50Гб, планируемый объем после полного наполнения - 200-300 Гб. Запущена процедура наполнения базы данными, практически сплошные insert'ы один за другим, но не только, есть и проверки через select. Замечен такой неприятный эффект: после некоторого времени (30-120 секунд) непрерывной правильной работы (клиенты наполнения получают отклик на свои операции, сервер стучит дисками и мигает лампочками дисковой активности) возникают большие (20-90 секунд) паузы (клиенты "замирают", сервер не производит дисковых операций). Потом нормальная деятельность возобновляется. Промежутки времени примерно в указанных диапазонах, но каждый раз разные. Предполагаю, что в эти паузы Firebird производит какие-то мощные операции в памяти и/или подготавливает увеличение файла базы. Однако размер файла меняется далеко не каждый раз после паузы. Вопрос: может быть, как-то можно оптимизировать процесс? Подскажите, пожалуйста, чем можно поиграть. Большие паузы - это не здорово. Хорошо еще, что сейчас "живых" клиентов нет, а то их такие задержки крайне бы раздражали. Firebird 3.03 SuperServer Windows 2012 R2 32ГБ ОП 4ТБ NTFS RAID1 (зеркало) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 22:48 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyansky, скорее всего файл базы данных расширяется, а расширяется он большими кусками ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 22:52 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
Симонов Денисскорее всего файл базы данных расширяется Это первое предположение, да. Но, повторюсь, далеко не после каждой паузы файл меняет свой размер, а если меняет, то как-то несущественно. На фоне 50Гб - на единицы-десятки Мб. Может быть, есть где-то опция задать размер этих чанков? Чтобы сразу отхватить, так отхватить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 22:58 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyansky, отсюда не видно что у вас там за insert и промежуточные select. Есть ли индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 23:00 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyanskyЗамечен такой неприятный эффект: после некоторого времени (30-120 секунд) непрерывной правильной работы (клиенты наполнения получают отклик на свои операции, сервер стучит дисками и мигает лампочками дисковой активности) возникают большие (20-90 секунд) паузы (клиенты "замирают", сервер не производит дисковых операций).Наличие дисковых операций только по лампочкам определяется ? Или таки кто-то умеет perfmon'ом пользоваться ? Какой размер кеша БД ? Режим FW ? Что изменено в firebird.conf ? Сколько индексов на таблице ? Есть триггеры ? shalamyanskyМожет быть, есть где-то опция задать размер этих чанков?DatabaseGrowthIncrement ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 23:05 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
Понятно, что отсюда не видно. Конкретика в данном случае существенна? Там 120 таблиц, и все они заполняются. Индексы есть, а как же. Отключить индексы не могу из-за тех самых проверок. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 23:06 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyansky, никто не предлагает отключить. Просто есть кое какие предположения на счёт пауз, но пусть лучше Влад ответит ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 23:09 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
hvladКакой размер кеша БД ? Режим FW ? Что изменено в firebird.conf ? Опции все стоят умолчальные из дистрибутива для Windows64. DefaultDbCachePages = 2048 FileSystemCacheThreshold = 64K FileSystemCacheSize = 0 TempCacheLimit = 64M hvladРежим FW? Прошу прощения, FW - это что? hvladСколько индексов на таблице ? Есть триггеры ? От 1 до 10 индексов, в основном по 2 на таблицу. И по 1-2 триггера. hvladDatabaseGrowthIncrement Вот! Это оно, скорее всего. Буду пробовать. Наверное, я мог бы и сам порыться и найти, а не отвлекать занятых людей, но раз есть форум, почему не воспользоваться? Благодарю и прошу извинить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 23:25 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
hvladНаличие дисковых операций только по лампочкам определяется ? Или таки кто-то умеет perfmon'ом пользоваться ? Можно и не по лампочкам. Но лампочки красивее и к железу ближе. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 23:48 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyanskyDefaultDbCachePages = 20482048 страниц для 50+ГБ БД ? Серьёзно ? Может на уровне БД другое значение ? shalamyanskyFW - это что?Forced Writes Что показывает gstat -h для этой БД ? shalamyanskyМожно и не по лампочкам. Но лампочки красивее и к железу ближе.Я разве говорил что-то про resource monitor ? Кто-то знает, что у него синее, а что - зелёное ? И где physical IO, а где - logical IO ? Запустите PerfMon и для начала создайте график с Processor\Privileged Time, Processor\User Time, LogicalDisk\Disk Read Bytes/sec, LogicalDisk\Disk Write Bytes/sec, PhysicalDisk\Disk Read Bytes/sec, PhysicalDisk\Disk Write Bytes/sec Ещё я снял бы трассу запросов (с fbtracemgr или даже IBE) с логгированием триггеров и счётчиками производительности и посмотел бы что там делается в паузах дисковой активности ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 00:07 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyansky, куча несуразностей 1. "Запущена процедура наполнения базы данными" - и что, процедура наполнения будет продолжать так же шарашить при "живых клиентах"? 2 "Firebird 3.03 SuperServer" + "DefaultDbCachePages = 2048" - это как понимать? увеличивать кэш надо, и FileSystemCacheThreshold тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 00:17 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyanskyWindows 2012 R2 kdv2 "Firebird 3.03 SuperServer" + "DefaultDbCachePages = 2048" - это как понимать? увеличивать кэш надо, и FileSystemCacheThreshold тоже. При процитированном - не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 01:34 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я уже не помню, у этой версии винды что-то не так с файловым кэшем? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 11:12 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
kdvя уже не помню, у этой версии винды что-то не так с файловым кэшем? Да. Хотя конкретно на тройку это не должно бы влиять, поскольку в ней уже не используется флаг FILE_RANDOM_ACCESS, но всё равно там кэш агрессивнее, чем полезно для здоровья. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 13:39 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
kdv1. "Запущена процедура наполнения базы данными" - и что, процедура наполнения будет продолжать так же шарашить при "живых клиентах"? Да. Ожидаются ежедневные пополнения. Не в таком объеме, как при первичной закачке, но тоже существенные. hvlad2048 страниц для 50+ГБ БД ? Серьёзно ? kdv2 "Firebird 3.03 SuperServer" + "DefaultDbCachePages = 2048" - это как понимать? увеличивать кэш надо, и FileSystemCacheThreshold тоже. Господа, ваши рекомендации в конкретных цифрах? Или по какой методике размеры кеша определять? Все, что я смог почерпнуть в документации, (правда, для 2.5), это следующее: Параметр DefaultDbCachePages используется для настройки количества стра- ниц одной базы данных, находящихся в кэш-памяти одновременно. Суперсервер ис- пользует единый кэш (2048 страниц) для всех подключений и автоматически увели- чивает его при необходимости. Классик создает отдельный кэш (по умолчанию 75 страниц) для каждого соединения. При изменении данных параметров следует учитывать особенности аппа- ратно-программной платформы, других настроек сервера (TempBlockSize). Также, определение оптимальных для конкретной задачи настроек хеширования данных сервером может быть произведено экспериментальным путем. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 17:31 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyansky, у тебя супер!!! Увеличивай кеш минимум в 20 раз. http://www.ibase.ru/files/firebird/Firebird_Hardware_Guide_2015_rus.pdf Например вот так Код: plaintext 1. 2.
З.Ы. Надеюсь x64 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 17:39 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyanskyИли по какой методике размеры кеша определять? Включаешь аудит производительности запросов, даёшь базе прогреться в реальном рабочем режиме, анализируешь соотношение reads/fetches. В качестве абсолютного минимума можно из gstat взять сумму размеров горячих индексов в страницах (сомневаюсь, что ты сможешь вычислить размер горячих данных, прилагающихся к ним). Это всё чисто абстракция без знания конкретной БД и способов работы с ней. Реальные вещи имеют ещё дополнительные нюансы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 18:30 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyanskyГоспода, ваши рекомендации в конкретных цифрах? Или по какой методике размеры кеша определять? про существование сайта ibase.ru вы, видимо, не в курсе. И про раздел http://www.ibase.ru/develop/ тоже. и про документ http://www.ibase.ru/files/firebird/Firebird_Hardware_Guide_2015_rus.pdf в нем разве что про FileSystemCacheThreshold забыли упомянуть, что он должен быть больше DefaultDbCachePages, иначе файловый кэш ОС отрубится. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 20:29 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
Внял вашим рекомендациям, прочитал документ, посчитал кэш, поменял настройки. Спасибо. Помогло, но несильно. Измененные строки firebird.conf сейчас такие: DefaultDbCachePages = 100000 FileSystemCacheThreshold = 2048M FileSystemCacheSize = 25 TempCacheLimit = 1024M Размер страницы базы 16384. На картинке видны "импульсы". Скважность "импульсов" уменьшилась после добавки кэша, но до единицы еще далеко. Про трассировку понял, проведу позже. Надо еще разобраться с этими инструментами. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 21:54 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
kdvиначе файловый кэш ОС отрубится. Возможно, в его случае это как раз будет к лучшему. Если, конечно, у него дисковая подсистема хорошая. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 22:10 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyansky, еще бы в перфмоне счетчики отмасштабировать правильно, чтобы графики не упирались вверх. shalamyanskyFileSystemCacheThreshold = 2048M нафига это, если размер кэша поставлен 100000 страниц? Вы же потом не вспомните, зачем такое значение В СТРАНИЦАХ воткнули. shalamyanskyFileSystemCacheSize = 25 тоже непонятно, почему 25%, а не 50%, к примеру. shalamyanskyTempCacheLimit = 1024M а что, есть запросы с сортировкой, или большие файлы fb_...tmp в папке temp? А к перфмону еще надо добавить "длину очереди". Впрочем, может, что-то не так с контроллером диска? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 22:35 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
shalamyanskyDefaultDbCachePages = 100000Вы уверены, что для ВСЕХ БД так нужно ? shalamyanskyFileSystemCacheSize = 25Вернуть в 0 и перезагрузиться. Не надо этот параметр трогать. gstat -h мы увидим когда-нибудь ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 23:21 |
|
Большие паузы при наполнении базы
|
|||
---|---|---|---|
#18+
Спасибо всем за участие! Набрался полезных знаний, которые помогли разобраться в ситуации. Докладываю: дисковая подсистема оказалась ни причем, и сервер тоже. Собака была зарыта в регулярных дедлоках, на которые напарывались два или более наполняющие базу клиенты. После устранения причины дедлоков загрузка пошла гладко и ровно, без каких-либо провалов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 23:19 |
|
|
start [/forum/topic.php?fid=40&fpage=35&tid=1561198]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 142ms |
0 / 0 |