Падение произвдительности
Добавлено: 18 дек 2010, 14:47
Добрый день!
Сразу скажу, что в Firebird и БД в целом я новичок, и, несмотря на это, прошу помочь разобраться (хотя бы указать, в каком направлении дальше копать) в следующей ситуации:
Имеется две реплицирующихся между собой удалённых БД на Firebird размером почти 70gb каждая. Одновременно с ними работают около 70 пользователей (20 с одной базой, 50 с другой). Периодически (раз в 2 недели/месяц) случалась 100% загруженность дисковой подсистемы сервера, исправить которую удавалось только остановкой сервера и дальнейшим backup/restore. После введения в строй третьей БД и добавления 10 пользователей, подобное стало происходить заметно чаще (раз в 2 дня-неделю).
Железо используется разнообразное, смысла его приводить не вижу. Что на старых серверах проблема, что на новых с SAS-овскими дисками. Софт-конфигурации на серверах практически идентичны друг другу - FreeBSD 7.2, Firebird 2.03, настройки аналогичны. Большую часть базы (по массе) занимают фотографии (200кб-1,5 мб). Непосредственно таблицы, около 4gb.
Попробовал проанализировать лог IBAnalyst'ом (вер.1.9.5, через Services API),
вот мои рассуждения:
1) Программная и аппаратная конфигурация железа в данном случае если и влияет на ситуацию то незначительно;
2) По какой-то причине некоторые транзакции (довольно много) не завершаются, остаются висеть... Но это тоже не должно оказывать влияния на сабж;
3) Индексы. Очень похоже на то, что собака как раз в них и зарылась. Очень мало уникальных ключей.
4) Сборка мусора. Первое, что я попробовал сделать - отключил автоматическую сборку мусора в одной БД (с которой, собственно, и выложил выше лог). На проблеме это никак не сказалось.
5) Размер страниц БД равен 4096байт, а блоков файловой системы - 1024. Стоит ли менять? Если да, то на что? 16384 и 16384?
Заранее спасибо.
Сразу скажу, что в Firebird и БД в целом я новичок, и, несмотря на это, прошу помочь разобраться (хотя бы указать, в каком направлении дальше копать) в следующей ситуации:
Имеется две реплицирующихся между собой удалённых БД на Firebird размером почти 70gb каждая. Одновременно с ними работают около 70 пользователей (20 с одной базой, 50 с другой). Периодически (раз в 2 недели/месяц) случалась 100% загруженность дисковой подсистемы сервера, исправить которую удавалось только остановкой сервера и дальнейшим backup/restore. После введения в строй третьей БД и добавления 10 пользователей, подобное стало происходить заметно чаще (раз в 2 дня-неделю).
Железо используется разнообразное, смысла его приводить не вижу. Что на старых серверах проблема, что на новых с SAS-овскими дисками. Софт-конфигурации на серверах практически идентичны друг другу - FreeBSD 7.2, Firebird 2.03, настройки аналогичны. Большую часть базы (по массе) занимают фотографии (200кб-1,5 мб). Непосредственно таблицы, около 4gb.
Попробовал проанализировать лог IBAnalyst'ом (вер.1.9.5, через Services API),
вот мои рассуждения:
1) Программная и аппаратная конфигурация железа в данном случае если и влияет на ситуацию то незначительно;
2) По какой-то причине некоторые транзакции (довольно много) не завершаются, остаются висеть... Но это тоже не должно оказывать влияния на сабж;
3) Индексы. Очень похоже на то, что собака как раз в них и зарылась. Очень мало уникальных ключей.
4) Сборка мусора. Первое, что я попробовал сделать - отключил автоматическую сборку мусора в одной БД (с которой, собственно, и выложил выше лог). На проблеме это никак не сказалось.
5) Размер страниц БД равен 4096байт, а блоков файловой системы - 1024. Стоит ли менять? Если да, то на что? 16384 и 16384?
Заранее спасибо.