|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Ежедневно на пиковой нагрузке получаю 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 продключений ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 05:05 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhope, ищи кривые UDF/UDR ну и обновится желательно до 3.0.3. Там были исправлены некоторые утечки памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 07:14 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Смотреть в MON$MEMORY_USAGE, на какие объекты и в каком количестве распределяется память. Совпадает ли (примерно) значение уровня DATABASE (MON$STAT_GROUP = 0) показаниям системных мониторов. Есть ли пики на уровне аттачей (MON$STAT_GROUP = 1), транзакций (MON$STAT_GROUP = 2) и т.п. Если нет навыков это анализировать, то выгрузить всю таблицу в excel и выложить тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 07:53 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денис, на 3.0.3 не перешли - непонравилось распределение нагрузки между процессорами у 3.0.2 более равномерная ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:19 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
dimitr, ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:21 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhope, ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:29 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
dimitr, ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:34 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
dimitr, ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:35 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
dimitr, ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:35 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денис https://cloud.mail.ru/public/6UHM/hJBFfAeam ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 09:19 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhopeСимонов Денис, на 3.0.3 не перешли - непонравилось распределение нагрузки между процессорами у 3.0.2 более равномернаяВроде ещё не пятница ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:10 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
много коннектов по 100-200 мегабайт каждый, причем юзерских запросов там единицы. Либо есть какая-то утечка памяти в ФБ, либо это все отжирается под кеш метаданных. Причем под кешированные процедуры/триггера. Насколько "развесистые" запросы с т.з. вызываемых PSQL-модулей? Типа внутри одной ХП вызов еще десятка, внутри которых тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 20:17 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
dimitrмного коннектов по 100-200 мегабайт каждый, причем юзерских запросов там единицы. Либо есть какая-то утечка памяти в ФБ, либо это все отжирается под кеш метаданных. Причем под кешированные процедуры/триггера. Восстановление базы из бэкапа с признаком - только метаданные даёт базу размером менее 66 МБ (66 994 176 байт) Т.е. коннект с использованной памятью 261831504 байт вмещает 4 (3,9) копии метаданных (и таких коннектов действительно пара сотен). Зачем столько копий (если это копии)? dimitr Насколько "развесистые" запросы с т.з. вызываемых PSQL-модулей? Типа внутри одной ХП вызов еще десятка, внутри которых тоже самое. Очень развеститые. Многие ХП - рекурсивные, вызываются с разными параметрами, вложенность рекурсии может доходить до 7(из того что написано мной), анализ по прочим не делала. Триггеры, конечно, вызывают ХП и рекурсивные в том числе, часто текст запроса генерируется в run-time ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 01:37 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денисfnvhope, ищи кривые UDF/UDR ну и обновится желательно до 3.0.3. Там были исправлены некоторые утечки памяти Симонов Денис, Вам удалось посмотреть тесты? Тесты корректны, показательны (таблица содержит около 55 тыс. записей)? Можете предоставить ссылку на информацию об утечке? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 02:53 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 07:22 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhopeВосстановление базы из бэкапа с признаком - только метаданные даёт базу размером менее 66 МБ вот почему некоторые думают, что метаданные на диске и в памяти (кеш метаданных) одно и тоже? Это совсем не так. Кстати вот ещё один вариант http://tracker.firebirdsql.org/browse/CORE-5611 ответа на вопрос почему много памяти кушается. Жаль в трёшку исправление не портировали. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 09:37 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денисвот почему некоторые думают, что метаданные на диске и в памяти (кеш метаданных) одно и тоже? Это совсем не так. метаданные на диске - это хоть какая-то отправная точка http://www.sql.ru/forum/784504/uznat-tekushhiy-razmer-kesha-metadannyh ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 14:13 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денисfnvhope, http://tracker.firebirdsql.org/browse/CORE-5416 Не смогла повторить - нет содержимого файлов, и описания теста не нашла (не исключаю своей незрелости) @call run_test_w64_local2_d3.bat @call run_test_w32_local2_d3.bat ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 14:16 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhope, ну так dimitrв 2.5 можно попробовать снять размер памяти для объекта database, вычесть из него память, занимаемую всеми объектами attachment оной database, вычесть размер страничного кеша. Остаток в первом приближении будет размером кеша метаданных. где тут про размер метаданных на диске? Речь о том как приближённо вычислить через MON$ ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 14:17 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денисdimitrв 2.5 можно попробовать снять размер памяти для объекта database, вычесть из него память, занимаемую всеми объектами attachment оной database, вычесть размер страничного кеша. Остаток в первом приближении будет размером кеша метаданных. где тут про размер метаданных на диске? Речь о том как приближённо вычислить через MON$ Предварительно как-то инициировать загрузку в кэш 500 ХП, 400 триггеров, 150 таблиц, 100 доменов, 600 индексов, и всё это надо было сделать до перехода на 3.0. :о( Увы, не сообразила, минус мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 11:55 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhope, к слову. ничего гигантского в количестве ваших процедур, триггеров и таблиц нет. Промышленные БД обычно содержат тысячи триггеров и процедур, т.е. в 10 и более раз чем у вас. Другое дело, что в основном они на классике, но много переехали на суперклассик, и часть уже переехало на суперсервер 3.0. И пока такой проблемы (с пожиранием памяти) не наблюдается. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 12:06 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhope, на фига? Пока нет никаких подтверждений что это кеш метаданных столько отожрал. Надо сделать ровно один коннект и следить как на нём растёт память, и смотреть что делали когда память существенно выросла. Если много памяти хапается при коннекте, значит надо смотреть триггеры ON CONNECT и на старт, коммит транзакции. А нагрузочное тестирование перед переходом на новую версию это обязательно надо делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 12:20 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
kdvfnvhope, к слову. ничего гигантского в количестве ваших процедур, триггеров и таблиц нет. Промышленные БД обычно содержат тысячи триггеров и процедур, т.е. в 10 и более раз чем у вас. Другое дело, что в основном они на классике, но много переехали на суперклассик, и часть уже переехало на суперсервер 3.0. И пока такой проблемы (с пожиранием памяти) не наблюдается. Отсутствие проблем у других и вызвало эту тему на форуме. До этого мы работали на superserver 2.5 x32 и не знали горя, кроме производительности. Если размер кэша метаданых м.б. в два раза больше размера на диске, то это объяснило бы использование памяти. Пока просто добавили серверу ещё 12 Гб памяти, уменьшили размер кэша страниц с 4 Гб до 1Гб. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 15:42 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
Симонов Денис, Как заставить сервер загрузить метаданые в кэш? Если ХП рекурсивная сколько копий объектов представления её в памяти будет? Одна.? Столько, сколько вызовов? Столько сколько уровней рекурсии? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 16:00 |
|
Снова про память (Firebird 3.0.2.32703 SuperServer x64)
|
|||
---|---|---|---|
#18+
fnvhope До этого мы работали на superserver 2.5 x32 и не знали горя, кроме производительности. еще-бы, он по ядрам не распараллеливается. fnvhopeЕсли размер кэша метаданых м.б. в два раза больше размера на диске у супера 2.5 кэш метаданных общий, у 3.0 - как у классика, отдельный на каждый коннект. fnvhopeКак заставить сервер загрузить метаданые в кэш? сделать объекту/объектам prepare. рекурсия - это выполнение кода, если в каждом рекурсивном куске перед очередным вложенным вызовом жрётся память, значит будет n таких кусков при n рекурсивных вызовов. Сама по себе рекурсия память никак не отъедает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 16:07 |
|
|
start [/forum/topic.php?fid=40&msg=39684903&tid=1560038]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 515ms |
0 / 0 |