Firebird-сервер жрёт много памяти
Модераторы: kdv, Alexey Kovyazin
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Firebird-сервер жрёт много памяти
Добрый день.
Прошу без ответов вида "погугли", уже гуглил, ничего полезного не нашел.
Имеем Windows Server 2008, 64-разрядный. 8 гигов оперативки, 2 ядра по 3.5 Гц. На системе установлен Firebird 2.5 (х64) как SuperServer.
Есть база данных. Размер почти 10 гигов, page size=16384. В течение рабочего дня около 70 пользователей подключены к базе. К концу дня процесс жрет 5-6 гигов оперативной памяти. В firebird.conf все настройки по умолчанию, кроме FileSystemCacheSize = 10. Но получается, что система не обращает внимания на эту настройку и потребляем всю память, что есть.
Подскажите пожалуйста, куда копать, что менять?
Прошу без ответов вида "погугли", уже гуглил, ничего полезного не нашел.
Имеем Windows Server 2008, 64-разрядный. 8 гигов оперативки, 2 ядра по 3.5 Гц. На системе установлен Firebird 2.5 (х64) как SuperServer.
Есть база данных. Размер почти 10 гигов, page size=16384. В течение рабочего дня около 70 пользователей подключены к базе. К концу дня процесс жрет 5-6 гигов оперативной памяти. В firebird.conf все настройки по умолчанию, кроме FileSystemCacheSize = 10. Но получается, что система не обращает внимания на эту настройку и потребляем всю память, что есть.
Подскажите пожалуйста, куда копать, что менять?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Firebird-сервер жрёт много памяти
Наиболее частой причиной утечки памяти являются пользовательские UDF.
Re: Firebird-сервер жрёт много памяти
"Суперсервер" и "70 пользователей" - это нонсенс какой-то. Удивительно, как это у вас работает. Впрочем, Классик вам не светит с вашими 2 ядрами.
http://www.ibase.ru/devinfo/optimize.htm
И, да, udf надо проверять на утечки памяти.
http://www.ibase.ru/devinfo/optimize.htm
кто именно потребляет? процесс fbserver.exe? какая версия - надеюсь, именно 2.5.3? Если нет, нужно срочно обновлять.потребляем всю память, что есть.
И, да, udf надо проверять на утечки памяти.
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Re: Firebird-сервер жрёт много памяти
UDF применяю. Чаще это из библиотеки rfunc: datetostr, extract...(year,day и др.), lastsaymount, ltrim, padleft, strreplace и другие.Dimitry Sibiryakov писал(а):Наиболее частой причиной утечки памяти являются пользовательские UDF.
Т.е. лучше отойти от них к применению стандартных функций sql?
Ещё в базе есть сотня неиспользуемых udf, они тоже могут влиять или только те, что применяю?
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Re: Firebird-сервер жрёт много памяти
Да, процесс fbserver.exe. Версия 2.5.2.kdv писал(а):"Суперсервер" и "70 пользователей" - это нонсенс какой-то. Удивительно, как это у вас работает. Впрочем, Классик вам не светит с вашими 2 ядрами.
http://www.ibase.ru/devinfo/optimize.htm
кто именно потребляет? процесс fbserver.exe? какая версия - надеюсь, именно 2.5.3? Если нет, нужно срочно обновлять.потребляем всю память, что есть.
И, да, udf надо проверять на утечки памяти.
Извините, если вопрос глупый, но как нужно проверять udf на утечки памяти?
Re: Firebird-сервер жрёт много памяти
да очень просто. берете запрос типа select * from where myudf..., к мелкой таблице, а потом к "крупной", чтобы на несколько миллионов вызовов udf хватило. И замеряете память, до и после.Извините, если вопрос глупый, но как нужно проверять udf на утечки памяти?
нужно убедиться, что она самая свежая.Чаще это из библиотеки rfunc
надо 2.5.3Версия 2.5.2.
те udf, которые не вызываются, не могут приводить к утечке памяти, в принципе. Странный вопрос.они тоже могут влиять или только те
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Re: Firebird-сервер жрёт много памяти
не факт, что моя проверка была выполнена правильно, но некоторая утечка вроде есть.да очень просто. берете запрос типа...
буду переходить на стандартные sql функции. правда не все udf имеют аналоги среди стандартных, придется как-то выкручиваться.
странно. у моей rfunc в свойствах указано, что версия 5.4.0.29, хотя в инете самая последняя 2.1.3. чудесанужно убедиться, что она самая свежая.
это решит мою проблему?надо 2.5.3
просто на всякий случай спросил, так же думалте udf, которые не вызываются, не могут приводить к утечке памяти, в принципе. Странный вопрос.
И всё же, почему не срабатывает ограничение FileSystemCacheSize в конфиге?
Re: Firebird-сервер жрёт много памяти
Оно никак не относится к размеру памяти процесса.AlekseyTabakov писал(а):И всё же, почему не срабатывает ограничение FileSystemCacheSize в конфиге?
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Re: Firebird-сервер жрёт много памяти
Значит я не так понял описание этого параметра. А который параметр позволит ограничить потребление оперативки? И есть ли такой?hvlad писал(а):Оно никак не относится к размеру памяти процесса.AlekseyTabakov писал(а):И всё же, почему не срабатывает ограничение FileSystemCacheSize в конфиге?
Как я понимаю, немалую часть памяти потребляет кэш базы данных. Думал, FileSystemCacheSize как раз к этому и относится.
Re: Firebird-сервер жрёт много памяти
Нет такого параметраAlekseyTabakov писал(а):А который параметр позволит ограничить потребление оперативки? И есть ли такой?
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Re: Firebird-сервер жрёт много памяти
Что же тогда делать, чтобы процесс fbserver.exe не съедал всю имеющуюся свободную память?
Re: Firebird-сервер жрёт много памяти
эту может и не решит, зато решит другие проблемы. Вы считаете, что обновления Firebird выпускаются просто так, от нечего делать? Вам неинтересно почитать, какие баги исправлены в 2.5.3 относительно 2.5.2 ?это решит мою проблему?
какой-то беспредметный разговор. Если есть udf с утечкой, то НИЧЕМ ограничить потребляемую приложением память невозможно.Что же тогда делать, чтобы процесс fbserver.exe не съедал всю имеющуюся свободную память?
Дальше - если есть не утечки памяти, а например, повышенное потребление памяти, то теоретически его можно обнаружить через таблицы mon$.
Через mon$ можно найти вообще все "длительное" - коннекты, транзакции, запросы, т.е. все то, что мешает производительности.
Еще дальше - утечка может быть общая, если "утекающая udf" используется многими коннектами. А может быть частная, если udf используется какой-то одной задачей (или пользователем).
Ну и наконец - я вам уже сказал, что для 70 пользователей superserver не подходит. Дал ссылку на статью. Вы ее, похоже, читать не стали. В Классике, например, вы бы увидели, все процессы пожирают память, или только часть.
Либо у вас там не 70 пользователей, а 7, либо эти пользователи выполняют по одному простому запросу в час. В нормальной системе FB SuperServer с вашими 70 пользователей загнулся бы моментально (уперся в процессор, в 1 ядро).
Re: Firebird-сервер жрёт много памяти
Для начала - разобраться с утечкойAlekseyTabakov писал(а):Что же тогда делать, чтобы процесс fbserver.exe не съедал всю имеющуюся свободную память?
-
- Сообщения: 11
- Зарегистрирован: 21 янв 2013, 09:07
Re: Firebird-сервер жрёт много памяти
Добрый день.
Извините за долгое отсутствие, был занят другими задачами.
Пару недель назад избавился от всех udf. Даже удалил саму папку, в которой они лежали. К сожалению, это не помогла, к концу дня потребление процессом fbserver.exe оперативки часто достигает 4-6 гигов.
kdv, конечно я не считаю, что новые версии выходят просто так. Просто я не считаю, что моя проблема связана с версией 2.5.2. Такую вещь как утечку исправили бы давным давно, ещё до выходе 2 версии полагаю. Думаю, что проблема именно у меня где-то. В неправильном обращении к базе или каких-либо настройках или ещё в чем-либо, не знаю.
Статью по вашей ссылке читал.
Ну 70 пользователей это скорее максимальная нагрузка за день. Но в порядке 40 человек в течение рабочего дня сидят в программе постоянно, и там далеко не по 1 запросу в час. Не знаю, почему мой SuperServer не загнулся.
Извините за долгое отсутствие, был занят другими задачами.
Пару недель назад избавился от всех udf. Даже удалил саму папку, в которой они лежали. К сожалению, это не помогла, к концу дня потребление процессом fbserver.exe оперативки часто достигает 4-6 гигов.
kdv, конечно я не считаю, что новые версии выходят просто так. Просто я не считаю, что моя проблема связана с версией 2.5.2. Такую вещь как утечку исправили бы давным давно, ещё до выходе 2 версии полагаю. Думаю, что проблема именно у меня где-то. В неправильном обращении к базе или каких-либо настройках или ещё в чем-либо, не знаю.
Статью по вашей ссылке читал.
Ну 70 пользователей это скорее максимальная нагрузка за день. Но в порядке 40 человек в течение рабочего дня сидят в программе постоянно, и там далеко не по 1 запросу в час. Не знаю, почему мой SuperServer не загнулся.
Re: Firebird-сервер жрёт много памяти
не надо полагать. может, действительно, вы какой-то SQL вызываете, который больше никто не пишет, и поэтому проблема только у вас.ещё до выходе 2 версии полагаю