powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Снова про память (Firebird 3.0.2.32703 SuperServer x64)
25 сообщений из 58, страница 1 из 3
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682300
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ежедневно на пиковой нагрузке получаю OutOfMemory
процесс Firebird вырастает до 60 Гб
Помогите найти причину. Даже при наличии кеша на подключение, а не на процесс 522*50Мб - 26Гб

Максимальное количество пользователей 522

Виртуальный сервер (Xenon Platinum 8160 (2.1GHz) 2 процессора, память 64 Gb, ОС WinSrv20

База
Page Size 16384
ODS Version 12.0
Oldest Tr. 6576715
Oldest Active Tr. 6576716
Oldest Snapshot Tr. 6576716
Next Tr. 6625664
Page Buffers 65536
SQL Dialect 3
Shutdown Mode Online
Sweep Interval 20000
Read Only No
Forced Writes Yes
Reserve Space No
Created At 20.05.2018 10:49
Pages 1520344
Size, KB 24325504
Size, MB 23755,38
Backup State Normal
Non-indexed Reads 110509853
Indexed Reads 291856415
Records Inserted 170457
Records Updated 234478
Records Deleted 27895
Records Backed Out 15489
Records Purged 110627
Records Expunged 116110
Page Reads 7929658
Page Writes 299662
Page Fetches 867207569
Page Marks 4309822

Конфигурация
#########################################
#
# Firebird version 3.0 configuration file
#

# ----------------------------
# Database Paths/Directories
#
# DatabaseAccess = None
# DatabaseAccess = Restrict C:\DataBase
# DatabaseAccess = Restrict C:\DataBase;D:\Mirror
# DatabaseAccess = Restrict /db
# DatabaseAccess = Restrict /db;/mnt/mirrordb
# DatabaseAccess = Full
#
#DatabaseAccess = Full

#RemoteAccess = true

#ExternalFileAccess = None

#UdfAccess = Restrict UDF

#TempDirectories =

#AuditTraceConfigFile =

#MaxUserTraceLogSize = 10


#DefaultDbCachePages = 2048
#FNV
DefaultDbCachePages = 64K

#DatabaseGrowthIncrement = 128M

#FileSystemCacheThreshold = 64K
#FNV
FileSystemCacheThreshold = 129K

#FileSystemCacheSize = 0

#RemoteFileOpenAbility = 0

#TempBlockSize = 1M
#FNV
TempBlockSize = 2M

TempCacheLimit = 64M
#FNV - кэш сортировок - один на процесс
#TempCacheLimit = 2G

#AuthServer = Srp
AuthServer = Legacy_Auth, Srp, Win_Sspi

#AuthClient = Srp, Win_Sspi, Legacy_Auth
AuthClient = Legacy_Auth, Srp, Win_Sspi

#UserManager = Srp
UserManager = Legacy_UserManager, Srp

#TracePlugin = fbtrace

#WireCryptPlugin = Arc4

#KeyHolderPlugin =

#AllowEncryptedSecurityDatabase = false

#Providers = Remote,Engine12,Loopback

#DeadlockTimeout = 10

#MaxUnflushedWrites = 100

#MaxUnflushedWriteTime = 5

#BugcheckAbort = 0


#RelaxedAliasChecking = 0

#ConnectionTimeout = 180

#WireCrypt = Enabled (for client) / Required (for server)
#FNV
WireCrypt = disabled

#WireCompression = false

#DummyPacketInterval = 0


#RemoteServiceName = gds_db
#RemoteServicePort = 3050
#FNV
#RemoteServiceName = gds_db_64
#RemoteServicePort = 3051

#RemoteAuxPort = 0

#TcpRemoteBufferSize = 8192

#TcpNoNagle = 1

#IPv6V6Only = 0

#RemoteBindAddress =

#LockMemSize = 1M

#LockAcquireSpins = 0

#LockHashSlots = 8191

#EventMemSize = 64K

#CpuAffinityMask = 0

#GCPolicy = combined

#SecurityDatabase = $(dir_secDb)/security3.fdb

#GuardianOption = 1

#ProcessPriorityLevel = 0

#IpcName = FIREBIRD

#RemotePipeName = interbas

#Redirection = 0

ServerMode = Super


вот показатели VMMap при 380 продключений
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682317
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhope,

ищи кривые UDF/UDR
ну и обновится желательно до 3.0.3. Там были исправлены некоторые утечки памяти
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682328
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотреть в MON$MEMORY_USAGE, на какие объекты и в каком количестве распределяется память. Совпадает ли (примерно) значение уровня DATABASE (MON$STAT_GROUP = 0) показаниям системных мониторов. Есть ли пики на уровне аттачей (MON$STAT_GROUP = 1), транзакций (MON$STAT_GROUP = 2) и т.п. Если нет навыков это анализировать, то выгрузить всю таблицу в excel и выложить тут.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682332
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, на 3.0.3 не перешли - непонравилось распределение нагрузки между процессорами
у 3.0.2 более равномерная
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682333
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr,
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682338
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fnvhope,
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682341
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr,
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682342
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr,
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682343
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr,
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682370
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682391
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhopeСимонов Денис, на 3.0.3 не перешли - непонравилось распределение нагрузки между процессорами
у 3.0.2 более равномернаяВроде ещё не пятница
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682800
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
много коннектов по 100-200 мегабайт каждый, причем юзерских запросов там единицы. Либо есть какая-то утечка памяти в ФБ, либо это все отжирается под кеш метаданных. Причем под кешированные процедуры/триггера. Насколько "развесистые" запросы с т.з. вызываемых PSQL-модулей? Типа внутри одной ХП вызов еще десятка, внутри которых тоже самое.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682870
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitrмного коннектов по 100-200 мегабайт каждый, причем юзерских запросов там единицы. Либо есть какая-то утечка памяти в ФБ, либо это все отжирается под кеш метаданных. Причем под кешированные процедуры/триггера.

Восстановление базы из бэкапа с признаком - только метаданные даёт базу размером менее 66 МБ (66 994 176 байт)
Т.е. коннект с использованной памятью 261831504 байт вмещает 4 (3,9) копии метаданных (и таких коннектов действительно пара сотен). Зачем столько копий (если это копии)?

dimitr Насколько "развесистые" запросы с т.з. вызываемых PSQL-модулей? Типа внутри одной ХП вызов еще десятка, внутри которых тоже самое.

Очень развеститые. Многие ХП - рекурсивные, вызываются с разными параметрами, вложенность рекурсии может доходить до 7(из того что написано мной), анализ по прочим не делала. Триггеры, конечно, вызывают ХП и рекурсивные в том числе, часто текст запроса генерируется в run-time ХП.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682872
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfnvhope,

ищи кривые UDF/UDR
ну и обновится желательно до 3.0.3. Там были исправлены некоторые утечки памяти

Симонов Денис, Вам удалось посмотреть тесты? Тесты корректны, показательны (таблица содержит около 55 тыс. записей)? Можете предоставить ссылку на информацию об утечке?
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682889
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39682919
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhopeВосстановление базы из бэкапа с признаком - только метаданные даёт базу размером менее 66 МБ

вот почему некоторые думают, что метаданные на диске и в памяти (кеш метаданных) одно и тоже? Это совсем не так.

Кстати вот ещё один вариант http://tracker.firebirdsql.org/browse/CORE-5611 ответа на вопрос почему много памяти кушается. Жаль в трёшку исправление не портировали.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39683734
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисвот почему некоторые думают, что метаданные на диске и в памяти (кеш метаданных) одно и тоже? Это совсем не так.


метаданные на диске - это хоть какая-то отправная точка

http://www.sql.ru/forum/784504/uznat-tekushhiy-razmer-kesha-metadannyh
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39683737
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfnvhope,

http://tracker.firebirdsql.org/browse/CORE-5416

Не смогла повторить - нет содержимого файлов, и описания теста не нашла (не исключаю своей незрелости)
@call run_test_w64_local2_d3.bat
@call run_test_w32_local2_d3.bat
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39683738
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhope,

ну так

dimitrв 2.5 можно попробовать снять размер памяти для объекта database, вычесть из него память, занимаемую всеми объектами attachment оной database, вычесть размер страничного кеша. Остаток в первом приближении будет размером кеша метаданных.

где тут про размер метаданных на диске? Речь о том как приближённо вычислить через MON$
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39684157
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисdimitrв 2.5 можно попробовать снять размер памяти для объекта database, вычесть из него память, занимаемую всеми объектами attachment оной database, вычесть размер страничного кеша. Остаток в первом приближении будет размером кеша метаданных.

где тут про размер метаданных на диске? Речь о том как приближённо вычислить через MON$

Предварительно как-то инициировать загрузку в кэш 500 ХП, 400 триггеров, 150 таблиц, 100 доменов, 600 индексов, и всё это надо было сделать до перехода на 3.0. :о( Увы, не сообразила, минус мне.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39684164
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhope,

к слову. ничего гигантского в количестве ваших процедур, триггеров и таблиц нет. Промышленные БД обычно содержат тысячи триггеров и процедур, т.е. в 10 и более раз чем у вас. Другое дело, что в основном они на классике, но много переехали на суперклассик, и часть уже переехало на суперсервер 3.0. И пока такой проблемы (с пожиранием памяти) не наблюдается.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39684180
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhope,

на фига? Пока нет никаких подтверждений что это кеш метаданных столько отожрал.
Надо сделать ровно один коннект и следить как на нём растёт память, и смотреть что делали когда память существенно выросла.

Если много памяти хапается при коннекте, значит надо смотреть триггеры ON CONNECT и на старт, коммит транзакции.

А нагрузочное тестирование перед переходом на новую версию это обязательно надо делать.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39684892
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvfnvhope,

к слову. ничего гигантского в количестве ваших процедур, триггеров и таблиц нет. Промышленные БД обычно содержат тысячи триггеров и процедур, т.е. в 10 и более раз чем у вас. Другое дело, что в основном они на классике, но много переехали на суперклассик, и часть уже переехало на суперсервер 3.0. И пока такой проблемы (с пожиранием памяти) не наблюдается.

Отсутствие проблем у других и вызвало эту тему на форуме. До этого мы работали на superserver 2.5 x32 и не знали горя, кроме производительности. Если размер кэша метаданых м.б. в два раза больше размера на диске, то это объяснило бы использование памяти. Пока просто добавили серверу ещё 12 Гб памяти, уменьшили размер кэша страниц с 4 Гб до 1Гб.
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39684903
fnvhope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Как заставить сервер загрузить метаданые в кэш? Если ХП рекурсивная сколько копий объектов представления её в памяти будет? Одна.? Столько, сколько вызовов? Столько сколько уровней рекурсии?
...
Рейтинг: 0 / 0
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
    #39684910
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fnvhope До этого мы работали на superserver 2.5 x32 и не знали горя, кроме производительности.
еще-бы, он по ядрам не распараллеливается.
fnvhopeЕсли размер кэша метаданых м.б. в два раза больше размера на диске
у супера 2.5 кэш метаданных общий, у 3.0 - как у классика, отдельный на каждый коннект.
fnvhopeКак заставить сервер загрузить метаданые в кэш?
сделать объекту/объектам prepare. рекурсия - это выполнение кода, если в каждом рекурсивном куске перед очередным вложенным вызовом жрётся память, значит будет n таких кусков при n рекурсивных вызовов. Сама по себе рекурсия память никак не отъедает.
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Снова про память (Firebird 3.0.2.32703 SuperServer x64)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]