|
firebird IOPS
|
|||
---|---|---|---|
#18+
Ситуация следующая, имеется сервер и база firebird на нем, но база не использует все имеющиеся ресурсы. СХД выдает 30k IOPS, профиль нагрузки 100% запить, блок 8k, случайная нагрузка. Это максимальные данные, полученные IOMeter. Память и CPU не используются и на 20%. Рабочую базу не трогаем, рядом создаем аналогичную среду, равную боевой. Дальше, учитываем, что я работаю с Firebird ровно один день. Создаю через iSQL базу данных Firebird. Настраиваю утилиту нагрузочного тестирования JMeter со следующей задачей, сессии делают insert into table1..10 values (1, 'name'). То есть каждая сессия делает вставку в 10 таблиц. Запускаем нагрузка, процессор и память также не полностью используются, как на бою. IOPS выдается всего 2500. Игры с настройками JMeter не приводят к увеличению числа IOPS. Можно запускать 10 или 60 параллельных запросов, число IOPS не меняется. Предварительный вывод, БД упирается во внутренний механизм и не в состоянии выжать больше 2500 IOPS. Чтобы подтвердить вывод, создаю еще одну такую же БД и запускаю сразу 2 нагрузочных теста jMeter. Число IOPS возрастает до 5000. Вопрос, почему база данных не способна нагрузить диск, во что она упирается. Есть ли способы настроить ее. Сразу скажу, я админ Оракл и с FB столкнулся впервые и то потому, что служба сопровождения FB считает, что у компании проблемы с СХД, а база настроена корректна. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 17:57 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird_iopsПамять и CPU не используются и на 20%. firebird_iopsбаза настроена корректна.Что скрывается под термином "корректна"? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:01 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
05.12.2017 17:57, firebird_iops пишет: > Ситуация следующая, имеется сервер и база firebird на нем никому не говори номер версии и платформу. соблюдай интригу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:01 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyЧто скрывается под термином "корректна"? Компания, сопровождающая ПО на Firebird считает нашу базу корректно настроенной. А то, что рост очереди запросов превышает скорость их обработки базой происходит из-за медленной работы СХД никому не говори номер версии и платформу. соблюдай интригу. Red database 2.6, ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:08 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
05.12.2017 18:08, firebird_iops пишет: > > Red database 2.6 в саппорт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:10 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird_iops, потому что вы лабуду тестируете. У вас параллельная вставка данных скорее всего упирается в блокировку одной страницы (таблицы, куда параллельно вставляются данные), поэтому никакой параллельности не выходит. firebird_iopsВопрос, почему база данных не способна нагрузить диск, во что она упирается. указал выше, во что упирается. Вы что хотите получить? Загрузку диска для однопользовательского режима, или для 200 пользователей, только для insert, или select/insert/update/delete, или что? IOMeter, кстати, если показывает 30к иопсов, то это макс. предел дисковой подсистемы, голый, там тупо запись пустых страниц идет, которые никак не связаны между собой. В любой базе страницы связаны между собой разным образом, пишутся в разных порядках, и т.д. Поэтому реальная СУБД будет медленнее IOmeter. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:11 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
пусть каждая сессия пишет в свою таблицу - тогда есть шанс нагрузить по максимуму. Иначе будете мерять все что угодно, кроме диска. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 18:21 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
kdvfirebird_iops, потому что вы лабуду тестируете. У вас параллельная вставка данных скорее всего упирается в блокировку одной страницы (таблицы, куда параллельно вставляются данные), поэтому никакой параллельности не выходит. firebird_iopsВопрос, почему база данных не способна нагрузить диск, во что она упирается. указал выше, во что упирается. Вы что хотите получить? Загрузку диска для однопользовательского режима, или для 200 пользователей, только для insert, или select/insert/update/delete, или что? IOMeter, кстати, если показывает 30к иопсов, то это макс. предел дисковой подсистемы, голый, там тупо запись пустых страниц идет, которые никак не связаны между собой. В любой базе страницы связаны между собой разным образом, пишутся в разных порядках, и т.д. Поэтому реальная СУБД будет медленнее IOmeter. Спасибо за ответ, именно из-за него я и создал тему. Понятно, что при моем тесте происходит сериализация на уровне БД, которая приводит к ограниченному числу IOPS. Чтобы исключить блокировку страницы, сделаю несколько больших таблиц с индексом по одному полю и запущу случайны update. Тогда изменения будут проходить в разных страницах и блокировка уйдет. Скажите, каким образом можно увидеть, что происходит блокировка страницы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 09:25 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird_iopsСкажите, каким образом можно увидеть, что происходит блокировка страницы? пока что только через fb_lock_print ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 09:34 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird_iopsСкажите, каким образом можно увидеть, что происходит блокировка страницы? интуитивно :-) Если вопрос о том, как увидеть очереди ожидания на странице, то есть fb_lock_print. Но при опыте "ровно один день" поллитрой там не обойтись... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 09:39 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird_iops, а ещё блокировки происходят когда дёргаешь один и тот же генератор (последовательность). Ширина записи обычно меньше размера страницы. Кроме того записи ещё сжимаются, поэтому на одну страницу влезает много записей. С помощью утилиты gstat можно посмотреть сколько записей в среднем влезает на страницу данных конкретной таблицы. Это поможет подобрать диапазоны чтобы минимизировать блокировки страницы при одновременной модификации одной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 10:02 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
Какие настройки кэширования в файле firebird.conf? ForceWrites для базы включен/выключен? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 10:12 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird_iopsНастраиваю утилиту нагрузочного тестирования JMeter со следующей задачей, сессии делают insert into table1..10 values (1, 'name'). То есть каждая сессия делает вставку в 10 таблиц.С автокоммитом небось ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 11:00 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
Симонов Денис пока что только через fb_lock_print Спасибо, там действительно сложно разобраться без опыта. а ещё блокировки происходят когда дёргаешь один и тот же генератор (последовательность). Ширина записи обычно меньше размера страницы. Кроме того записи ещё сжимаются, поэтому на одну страницу влезает много записей. С помощью утилиты gstat можно посмотреть сколько записей в среднем влезает на страницу данных конкретной таблицы. Это поможет подобрать диапазоны чтобы минимизировать блокировки страницы при одновременной модификации одной таблицы. Число записей на страницу примерно можно посчитать, при размере 8k и таблице из двух строк (integer + varchar), например ('1', 'Здесь мое имя') делим размер на длину записи. Примерно, конечно. Какие настройки кэширования в файле firebird.conf? ForceWrites для базы включен/выключен? Не нашел такого параметра. Как я понял, по уполчанию он включен. С автокоммитом небось ? Да, с автокоммитом. Если без автокоммита и вручную делать коммит в jmeter, то при одинаковых тестах падает число IOPS, тогда как задача заставить базу выжимать максимум. ============ Сделал 10 таблиц по миллиону записей в каждой. Построил индекс по полю integer и запустил update t1..10 set name='xxxxxxxxx' where id = ? , где вместо ? идет переменная от 1 до миллиона. По идее при таком режиме не должны быть блокировки на уровне страницы, т.к. апдейты равномерно распределяются по десяти таблицам. После запуска теста чуть-чуть увеличилось число IOPS, порядка 2600. По сути разницы между последовательным INSERT и случайным update нет, что очень странно. На всякий случай проверил таблицы, в них действительно в случайном порядке изменились записи, так что тест работает как надо. fb_lock_print посмотрел, но мало что в нем понял, Mutex wait стоит 0.4%. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 17:34 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
ТС, ты для зачем всё это меряешь? какова причина? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 17:37 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
Мимопроходящий, "Компания, сопровождающая ПО на Firebird считает нашу базу корректно настроенной. А то, что рост очереди запросов превышает скорость их обработки базой происходит из-за медленной работы СХД" И вместо сравнительного измерения разных СХД он почему-то меряет что-то внутри ФБ. Впрочем, согласен, хреновый запрос и будет медленнее работать, чем хороший запрос. Хотя хреновость зависит еще и от структуры БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 17:43 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
06.12.2017 17:43, kdv пишет: > "Компания, сопровождающая ПО на Firebird считает нашу базу корректно настроенной. > А то, что рост очереди запросов превышает скорость их обработки базой происходит из-за медленной работы СХД" > И вместо сравнительного измерения разных СХД он почему-то меряет что-то внутри ФБ. Модератор: Достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 17:47 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird IOPS firebird_iopsДа, с автокоммитомЭто и есть узкое место, когда речь идёт о вставке одной записи в тр-ции. Делайте коммиты вручную и реже. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 17:54 |
|
firebird IOPS
|
|||
---|---|---|---|
#18+
firebird IOPS firebird_iopsПосле запуска теста чуть-чуть увеличилось число IOPS, порядка 2600. По сути разницы между последовательным INSERT и случайным update нет, что очень странно.Влад уже несколько раз повторил, что ты меряешь кол-во коммитов. Нельзя выставить 1 коммит на 1000 операторов? Например, сделать хранимку с 250 разных операторов внутри и прогнать ее вместо инсерта и, соответственно, коммит сработает 1 раз на 250 операторов. Хотя смысла такого тестирования я тоже не вижу. А в попугаях я гораздо длиннее. (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 18:03 |
|
|
start [/forum/topic.php?fid=40&fpage=38&tid=1561313]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 458ms |
0 / 0 |