Firebird 1.5: sort error: not enough memory

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
jFinder
Сообщения: 10
Зарегистрирован: 09 июл 2005, 12:27

Firebird 1.5: sort error: not enough memory

Сообщение jFinder » 24 окт 2005, 09:32

Вот столкнулся буквально со следующим сообщением при выполнении скрипта:
(Line: 43) : [21.10.2005 23:06:33] Executing SELECT ...FAILED!

Error occurred while executing following statement (line 43):
-------- STATEMENT ----------
select * from моя_процедура

-------- ERROR ----------
Unsuccessful execution caused by an unavailable resource.
sort error: not enough memory.
Скрипт запускался с клиентской машины. На сервере FB-V6.3.0.4290 Firebird 1.5 на FreeBSD. 4 гига оперативки, 2х процессорный Xeon.

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

Вопроса как водится два: кто виноват и что делать?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 24 окт 2005, 10:13

кончилось место в темпе? что прописано в конфиге TempDirectories?

jFinder
Сообщения: 10
Зарегистрирован: 09 июл 2005, 12:27

Сообщение jFinder » 24 окт 2005, 11:24

Под TMP серверу выделено 26Gb

Gor-Software
Сообщения: 1
Зарегистрирован: 25 дек 2007, 16:08

Firebird 1.5: sort error: not enough memory

Сообщение Gor-Software » 25 дек 2007, 16:29

Оперативки свободно 2,8GB из 4GB
На жестком диске свободно 13GB, временными файлами занято 1,5GB
FB 1.5.3.4870
Windows 2003

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

Глюк пропал после того, как я установил в настройках FB:
TempDirectories = D:\Temp 10000000000

После исследования FB, указываю следующую таблицу, где указаны разные ограничения на размер временных папок и почти максимальное реально занимаемое пространство в этих папках при установке данных ограничений (если FB требуется больше, то он начинает ругаться)

в настройках | реально занимает FB
-----------------------------------------------
100000000 | 25MB
150000000 | 78MB
200000000 | 125MB
250000000 | 172MB
300000000 | 219MB

Из таблицы видно, что FB будет использовать совсем не указанный размер для временных файлов, а намного меньший.

Установка параметра SortMemUpperLimit уменьшает общий объем верменных файлов, т.к. FB часть сортировки производит в памяти, а уж потом (если не хватает) начинает писать в файлы.
Т.к. оперативки свободной на сервере много, я установил SortMemUpperLimit = 134217728 (увеличил в 2 раза по сравнению со значением по умолчанию), в итоге объем временных файлов существенно сократился.

И самое главное, как я заметил, временные файлы раздуваются только при некоректном запросе (когда сортировка происходит без участия индексов).

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: Firebird 1.5: sort error: not enough memory

Сообщение WildSery » 25 дек 2007, 17:37

Gor-Software писал(а):FB 1.5.3.4870
Так просто, к сведению. Есть уже 1.5.5.
Суперсервер у тебя, конечно?
Gor-Software писал(а):Из таблицы видно, что FB будет использовать совсем не указанный размер для временных файлов, а намного меньший.
Мне вот интересно, как ты получил эти цифры?
Ведь винда не сообщает точного размера открытого файла, пока он не закроется. А такого не происходит, т.к. он сразу удаляется ;)
Gor-Software писал(а):Т.к. оперативки свободной на сервере много, я установил SortMemUpperLimit = 134217728 (увеличил в 2 раза по сравнению со значением по умолчанию), в итоге объем временных файлов существенно сократился.
А чё так мало-то? Всего 128Мб. Если у тебя такие пузатые сортировки, то мог бы и побольше ещё раза в два или больше отдать.
Gor-Software писал(а):И самое главное, как я заметил, временные файлы раздуваются только при некоректном запросе (когда сортировка происходит без участия индексов).
Сюда читай, для начала.

Ответить