Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / firebird IOPS / 20 сообщений из 20, страница 1 из 1
05.12.2017, 17:57
    #39564610
firebird_iops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
Ситуация следующая, имеется сервер и база 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 считает, что у компании проблемы с СХД, а база настроена корректна.
...
Рейтинг: 0 / 0
05.12.2017, 18:01
    #39564620
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird_iopsПамять и CPU не используются и на 20%.
firebird_iopsбаза настроена корректна.Что скрывается под термином "корректна"?
...
Рейтинг: 0 / 0
05.12.2017, 18:01
    #39564621
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
05.12.2017 17:57, firebird_iops пишет:
> Ситуация следующая, имеется сервер и база firebird на нем

никому не говори номер версии и платформу.
соблюдай интригу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.12.2017, 18:08
    #39564629
firebird_iops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
Ivan_PisarevskyЧто скрывается под термином "корректна"?

Компания, сопровождающая ПО на Firebird считает нашу базу корректно настроенной. А то, что рост очереди запросов превышает скорость их обработки базой происходит из-за медленной работы СХД

никому не говори номер версии и платформу.
соблюдай интригу.

Red database 2.6,
...
Рейтинг: 0 / 0
05.12.2017, 18:10
    #39564635
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
05.12.2017 18:08, firebird_iops пишет:
>
> Red database 2.6

в саппорт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.12.2017, 18:11
    #39564638
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird_iops,

потому что вы лабуду тестируете. У вас параллельная вставка данных скорее всего упирается в блокировку одной страницы (таблицы, куда параллельно вставляются данные), поэтому никакой параллельности не выходит.
firebird_iopsВопрос, почему база данных не способна нагрузить диск, во что она упирается.
указал выше, во что упирается. Вы что хотите получить? Загрузку диска для однопользовательского режима, или для 200 пользователей, только для insert, или select/insert/update/delete, или что?

IOMeter, кстати, если показывает 30к иопсов, то это макс. предел дисковой подсистемы, голый, там тупо запись пустых страниц идет, которые никак не связаны между собой.
В любой базе страницы связаны между собой разным образом, пишутся в разных порядках, и т.д. Поэтому реальная СУБД будет медленнее IOmeter.
...
Рейтинг: 0 / 0
05.12.2017, 18:21
    #39564646
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
пусть каждая сессия пишет в свою таблицу - тогда есть шанс нагрузить по максимуму. Иначе будете мерять все что угодно, кроме диска.
...
Рейтинг: 0 / 0
06.12.2017, 09:25
    #39564836
firebird_iops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
kdvfirebird_iops,

потому что вы лабуду тестируете. У вас параллельная вставка данных скорее всего упирается в блокировку одной страницы (таблицы, куда параллельно вставляются данные), поэтому никакой параллельности не выходит.
firebird_iopsВопрос, почему база данных не способна нагрузить диск, во что она упирается.
указал выше, во что упирается. Вы что хотите получить? Загрузку диска для однопользовательского режима, или для 200 пользователей, только для insert, или select/insert/update/delete, или что?

IOMeter, кстати, если показывает 30к иопсов, то это макс. предел дисковой подсистемы, голый, там тупо запись пустых страниц идет, которые никак не связаны между собой.
В любой базе страницы связаны между собой разным образом, пишутся в разных порядках, и т.д. Поэтому реальная СУБД будет медленнее IOmeter.

Спасибо за ответ, именно из-за него я и создал тему. Понятно, что при моем тесте происходит сериализация на уровне БД, которая приводит к ограниченному числу IOPS. Чтобы исключить блокировку страницы, сделаю несколько больших таблиц с индексом по одному полю и запущу случайны update. Тогда изменения будут проходить в разных страницах и блокировка уйдет.

Скажите, каким образом можно увидеть, что происходит блокировка страницы?
...
Рейтинг: 0 / 0
06.12.2017, 09:34
    #39564841
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird_iopsСкажите, каким образом можно увидеть, что происходит блокировка страницы?

пока что только через fb_lock_print
...
Рейтинг: 0 / 0
06.12.2017, 09:39
    #39564845
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird_iopsСкажите, каким образом можно увидеть, что происходит блокировка страницы?
интуитивно :-) Если вопрос о том, как увидеть очереди ожидания на странице, то есть fb_lock_print. Но при опыте "ровно один день" поллитрой там не обойтись...
...
Рейтинг: 0 / 0
06.12.2017, 10:02
    #39564857
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird_iops,

а ещё блокировки происходят когда дёргаешь один и тот же генератор (последовательность).

Ширина записи обычно меньше размера страницы. Кроме того записи ещё сжимаются, поэтому на одну страницу влезает много записей.
С помощью утилиты gstat можно посмотреть сколько записей в среднем влезает на страницу данных конкретной таблицы. Это поможет подобрать диапазоны чтобы минимизировать блокировки страницы при одновременной модификации одной таблицы.
...
Рейтинг: 0 / 0
06.12.2017, 10:12
    #39564862
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
Какие настройки кэширования в файле firebird.conf? ForceWrites для базы включен/выключен?
...
Рейтинг: 0 / 0
06.12.2017, 11:00
    #39564892
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird_iopsНастраиваю утилиту нагрузочного тестирования JMeter со следующей задачей, сессии делают insert into table1..10 values (1, 'name'). То есть каждая сессия делает вставку в 10 таблиц.С автокоммитом небось ?
...
Рейтинг: 0 / 0
06.12.2017, 17:34
    #39565289
firebird IOPS
Симонов Денис
пока что только через 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%.
...
Рейтинг: 0 / 0
06.12.2017, 17:37
    #39565293
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
ТС, ты для зачем всё это меряешь?
какова причина?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.12.2017, 17:43
    #39565299
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
Мимопроходящий,

"Компания, сопровождающая ПО на Firebird считает нашу базу корректно настроенной. А то, что рост очереди запросов превышает скорость их обработки базой происходит из-за медленной работы СХД"

И вместо сравнительного измерения разных СХД он почему-то меряет что-то внутри ФБ. Впрочем, согласен, хреновый запрос и будет медленнее работать, чем хороший запрос. Хотя хреновость зависит еще и от структуры БД.
...
Рейтинг: 0 / 0
06.12.2017, 17:47
    #39565304
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
06.12.2017 17:43, kdv пишет:
> "Компания, сопровождающая ПО на Firebird считает нашу базу корректно настроенной.
> А то, что рост очереди запросов превышает скорость их обработки базой происходит из-за медленной работы СХД"
> И вместо сравнительного измерения разных СХД он почему-то меряет что-то внутри ФБ.


Модератор: Достаточно.
...
Рейтинг: 0 / 0
06.12.2017, 17:54
    #39565314
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird IOPS firebird_iopsДа, с автокоммитомЭто и есть узкое место, когда речь идёт о вставке одной записи в тр-ции.
Делайте коммиты вручную и реже.
...
Рейтинг: 0 / 0
06.12.2017, 18:03
    #39565325
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird IOPS firebird_iopsПосле запуска теста чуть-чуть увеличилось число IOPS, порядка 2600. По сути разницы между последовательным INSERT и случайным update нет, что очень странно.Влад уже несколько раз повторил, что ты меряешь кол-во коммитов. Нельзя выставить 1 коммит на 1000 операторов? Например, сделать хранимку с 250 разных операторов внутри и прогнать ее вместо инсерта и, соответственно,
коммит сработает 1 раз на 250 операторов.

Хотя смысла такого тестирования я тоже не вижу.

А в попугаях я гораздо длиннее. (с)
...
Рейтинг: 0 / 0
06.12.2017, 18:10
    #39565333
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird IOPS
firebird IOPS firebird_iopsЧисло записей на страницу примерно можно посчитать

Зачем только его считать, если gstat его покажет точно?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / firebird IOPS / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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