Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Снова про память (Firebird 3.0.2.32703 SuperServer x64) / 25 сообщений из 58, страница 1 из 3
02.08.2018, 05:05
    #39682300
fnvhope
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
Ежедневно на пиковой нагрузке получаю 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
02.08.2018, 07:14
    #39682317
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
fnvhope,

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

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

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

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

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

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

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

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


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

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

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

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

ну так

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

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

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

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

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

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

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

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

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

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

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


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