Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

Interbase 5.6 жрет память   Найти похожие ветки 

 
Извращенец2   (2005-09-30 06:51) [0]

Доброе время суток!

Помогите пожалуйста, уважаемые, с такой проблемой. Поставил Windows 2000 Server, сверху Interbase 5.6 "как есть" без каких либо настроек. Отресторил последний бэкап, запустил юзеров - и тут катастрофически начала кончаться память. Pagefile за сутки разбухает до 900Мб. В этот момент Interbase занимает 120Мб в памяти.

Грешу на него. Подскажите, в чем проблема? Где зарыта собака? Interbase.log молчит, ошибки только 10054(оторванный клиент), когда насильно сервер перегружал.


 
Sergey13 ©   (2005-09-30 09:10) [1]

А че такой старый сервер? Может пора обновляться?


 
Johnmen ©   (2005-09-30 09:21) [2]

http://www.ibase.ru/ibfaq.htm#memory


 
Os ©   (2005-09-30 10:38) [3]

IB не жрет, жрут программы, которые оставляют открытые запросы и соединения, а IB просто пытается их удержать.


 
DSKalugin ©   (2005-09-30 13:25) [4]

а по версии сервера сразу можно судить о том как написаны программы..


 
Desdechado ©   (2005-09-30 13:54) [5]

Замечу, что причина по ссылке [2] раскрыта не полностью.
Я наблюдал картину, когда сервер поедает память при использовании корректной UDF. Суть была в том, что транзакция была длительной, UDF использовалась в каждом запросе в ней, память освобождалась, но сервер (или ОС?) этого не подтверждали до конца транзакции. После завершения транзакции использованная память скачком освобождалась.
Кстати, я эту UDF написал в двух вариантах (освобождение памяти в самой UDF и через инструкцию серверу FREE_IT) - результат одинаков был. Для первого варианта только скорость поедания памяти была чуть-чуть меньше.


 
Sergey_Masloff   (2005-10-01 11:16) [6]

DSKalugin ©   (30.09.05 13:25) [4]
>а по версии сервера сразу можно судить о том как написаны программы..
Нормально написаны раз не потребовалась доработка за столько лет.
IB5.6 отличный сервак а то что описывает Desdechado ©   (30.09.05 13:54) [5] имело место быть да и сейчас имеет, насколько я знаю, и в последних версиях


 
Извращенец2   (2005-10-11 12:02) [7]

Добрый вам!

Господа, сузил круг поиска утечки памяти - она утекает только когда выполняется такой запрос:

select id
from allclients
where Upper(clname) like "%ИВАНОВ%"
order by idcl

allclients - это view, а не таблица

Вся остальная память освобождается при отключении, а вот сколько отъел этот запрос(замерял) - столько прибавляется к значению, которое было до подключения. И каждое выполнение запроса(даже с теми же параметрами) отъедает память безжалостно.

Варианты с "кривым" сервером, "кривой" UDF, "кривой" ОС не подтвердились.

Может кто подскажет, где тут "волшебство" в запросе? Вещи вроде элементарные...


 
Sergey13 ©   (2005-10-11 12:10) [8]

2[7] Извращенец2   (11.10.05 12:02)
Наверное было бы логично запостить и код создания вьюхи? Не находишь?


 
Desdechado ©   (2005-10-11 12:22) [9]

Откуда взята UPPER и как она определена в БД? Ведь можно элементарно "забыть" объявить FREE_IT, чтобы память утекала рекой...

Кстати, строка подключения к ЛОКАЛЬНОМУ серверу тоже влияет (если по локальному протоколу, то другие механизмы выделения памяти используются)


 
Johnmen ©   (2005-10-11 12:31) [10]

>Desdechado ©   (11.10.05 12:22) [9]
>Откуда взята UPPER

Она ТАМ была...:)


 
ANB ©   (2005-10-11 12:36) [11]


> select id
> from allclients
> where Upper(clname) like "%ИВАНОВ%"
> order by idc

Имхо. Такая конструкция приводит к полному сканированию таблицы без использования индексов.


 
Sergey_Masloff   (2005-10-11 12:52) [12]

ANB ©   (11.10.05 12:36) [11]
>Имхо. Такая конструкция приводит к полному сканированию таблицы без >использования индексов.
И что? И памяти должна занять немеряно под область сортировки. Но все это не повод потом эту память не отдавать.


 
ANB ©   (2005-10-11 12:53) [13]


> Sergey_Masloff   (11.10.05 12:52) [12]
- я ж написал - имхо. Оракла у меня память не жрет.


 
Извращенец2   (2005-10-11 17:28) [14]

Благодарю всех, кто откликнулся на призыв!

Нашел я все-таки дыру - это была UDF не-FREE_IT внутри вьюхи:) Респект тем, кто просек это с самого начала. Не меньший респект остальным участвующим!

Еще раз всем последователям: все UDF-ки, которые "by Reference", должны быть Free_IT! Иначе не напасатесь памяти на сервак.


 
Sergey_Masloff   (2005-10-11 17:31) [15]

Извращенец2   (11.10.05 17:28) [14]
Все UDF возвращающие ссылки на динамическую память а не все "by reference".



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.053 c
14-1130689087
Kolan
2005-10-30 19:18
2005.11.20
Помогите решить задачу по 1С.


14-1130398023
ZeroDivide
2005-10-27 11:27
2005.11.20
Приходится ли вам заниматься физической работой?


2-1128177159
Giga
2005-10-01 18:32
2005.11.20
SMTP сервер


5-1111654897
lvi
2005-03-24 12:01
2005.11.20
property FieldName как по умолчанию DataField


11-1110388878
stals
2005-03-09 20:21
2005.11.20
Kol и DLL (Плагины)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский