Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать
Модераторы: kdv, dimitr
-
Jenya
- Сообщения: 3
- Зарегистрирован: 22 мар 2005, 13:26
Сообщение
Jenya » 23 мар 2005, 13:31
Доброе время суток.
В процессе работы сервера в течение дня объём памяти (физическая + виртуальная) занятый им достигает 1,8 ГБ. При этом наблюдается AV в FreeIBUDF и при попытке сохранения процедуры - зависание работы с базой. Есть конечно грех, касающийся долговисящих транзакций, но рано или поздно пользователи уходят домой и транзакции завершаются, при этом пока есть какое-либо подключение к базе - память не освобождается. Как только отключается последний пользователь объём занимаемой памяти сразу становится 10 МБ.
Пробовал мероприятия рекомендуемые в разделе статьи ibase.ru, но что-то траблу решить не получается.
Подскажите кто может куда копать дальше? как узнать куда расходуется память? как ограничить объём используемой памяти в FB?
Конфигурация:
FB 1.5.2
настройки сервера по умолчанию
при выполнения запроса в IBExpert объём памяти 300 МБ
объём базы 7 ГБ
200000 транзакций в день
Buffers на БД 2048 (впрочем изменеие на ситуацию не влияет)
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 23 мар 2005, 14:45
Подскажите кто может куда копать дальше?
переписывать приложения. чтобы не было длинных транзакций, мощных открытых по часу запросов, и т.п.
настройки сервера по умолчанию
изменить настройки по умолчанию.
при выполнения запроса в IBExpert объём памяти 300 МБ
сколько памяти при этом занимает ibexpert? что вообще за запрос, хотя бы схематично?
200000 транзакций в день
не много?
-
Jenya
- Сообщения: 3
- Зарегистрирован: 22 мар 2005, 13:26
Сообщение
Jenya » 23 мар 2005, 15:35
Да действительно сейчас взят курс в разработке на борьбу с длинными транзакциями, но единственное не совсем понятно - да они длинные, но рано или поздно завершаются, что не сказывается к сожалению на объёме памяти в сторону уменьшения до отключения всех коннектов к базе (в т.ч. тех которые были в других программах, например, ибэксперт). Тут напрашивается решение время от времени отключать подключение к бд, но мне кажется оно не очень красиво, тем более пользователи плотно работают с БД и чтобы все сразу в какойто момент были отключены маловероятно.
По поводу настроек сервера - каким образом их изменить чтобы повлиять на ситуацию? Размер кэша (buffers) пробовал менять правда на БД - без эффекта, более того - он меняется сам как не странно или что-то его меняет помимо настроек. В плане настроек в доке на ИБ 6.0 описан параметр что-то типа маскимального объема используемой оперативной памяти сервером, но я не нашел его аналога в ФБ.
сам ибэксперт занимает 5МБ запрос любой например select * from rdb$database. речь идёт о цифре которая показывается после выполнения запроса в ИБ эксперте в нижней части SQL редактора и насколько я понимаю отражает размер кэша сервера.
200000 цифра реальная, конечно я не могу сказать среди них нет бесполезных или ненужных
-
Jenya
- Сообщения: 3
- Зарегистрирован: 22 мар 2005, 13:26
Сообщение
Jenya » 23 мар 2005, 15:39
Можно как-нить увидеть как распределилась память?
например столько ушло на кэш, столько на запросы, столько на сортировку, столько на подключенные клиенты или что-то в этом роде