Сторінка 1 з 1

Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 15 лютого 2019, 15:21
olexandrn
Добрый день!
Столкнулся с заполнение всей оперативной памяти (12ГБ) на терминальном сервере.

На сервере инсталлирован только Медок 11.00.027
Windows 2012R2, ОЗУ 12ГБ,
База Медка 30ГБ
Сетевая установка, база в режиме Суперсервер, используется ярлык на ezvitnet.exe
Активных пользователей примерно 15

Через некоторое время после запуска севрера, загрузка оперативной памяти доходит до 97% и далее заполняется свап.
Если посмотреть в таскменеджере виндовс то сумманый объем занимаемый программами значительно меньше, примерно 40-50%

С помощью инструмента RAMMap удалось обнаружить причину заполнения памяти.
https://docs.microsoft.com/en-us/sysint ... ads/rammap
1.PNG
1.PNG (17.74 Кіб) Переглянуто 6957 разів
2.PNG
2.PNG (12.58 Кіб) Переглянуто 6957 разів
Как выяснилось причиной такого поведения ПО является использование флага FILE_FLAG_RANDOM_ACCESS при доступе к файлу БД:
https://support.microsoft.com/en-us/hel ... lag-random

Временное решение:
https://serverfault.com/questions/30217 ... er-2008-r2

Данная проблема решена разработчиком БД начиная с версии 2.1.5
http://tracker.firebirdsql.org/browse/CORE-3791

К сожалению, в медке (11.00.027) используется база версии 2.1.4

=======================
Интересуют следующие вопросы:
  • 1. Можно ли самому обновить версию БД до 2.1.7 (последняя версия этой ветки)
    и не повлияет ли это на работу Медка?
    https://firebirdsql.org/en/firebird-2-1/
  • 2. вопрос к разработчику.
    Есть ли возможность обновить БД в дистрибутиве?

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 15 лютого 2019, 15:38
Ярослав Заец
olexandrn
olexandrn писав:
15 лютого 2019, 15:21
1. Можно ли самому обновить версию БД до 2.1.7 (последняя версия этой ветки)
и не повлияет ли это на работу Медка?
https://firebirdsql.org/en/firebird-2-1/
Да, Вы можете самостоятельно обновить версию FB до версии 2.1.7, на работу программы это не повлияет, так как эта версия из одной ветки FB.
olexandrn писав:
15 лютого 2019, 15:21
2. вопрос к разработчику.
Есть ли возможность обновить БД в дистрибутиве?
Разработчик работает над вопросом обновления версии FB

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 15 лютого 2019, 15:41
olexandrn
Достаточно ли просто заменить файлы в папке
C:\Program Files\Medoc\MedocSRV\Firebird_M
на более новые из архива дистрибутива?
Или необходимо инсталлировать с помощью визарда?

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 15 лютого 2019, 15:50
Ярослав Заец
С официального сайта Firebird Вы можете взять обновленные файлы (dll и exe) версии 2.1.7 и заменить в каталоге программы C:\Program Files\Medoc\MedocSRV\Firebird_M при остановленной службе Firebird.
После замены файлов запустите службу и программа будет работать под управлением версии 2.1.7

В случае инсталляции, можно установить версию 2.1.7 на другой порт и Connectionsetup.exe указать соответствующие настройки подключение Firebird

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 15 лютого 2019, 16:08
olexandrn
По умолчанию устанавливается версия Х32.
Есть ли необходимость устанавливать версию Х64?

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 17 лютого 2019, 18:58
Белокопытов Геннадий
olexandrn
Вы можете установить версию Firebird х32 или х64 в зависимости от технических ресурсов системы и свободной ОЗУ. Версия Firebird х64 будет потреблять больше системных ресурсов. Для программы достаточно использовать Firebird разрядности х32

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 21 лютого 2019, 10:08
olexandrn
Спасибо! Все работает.
Использование памяти нормализовалось.
Стало 4ГБ на 10 активных поьзователей

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 04 березня 2019, 15:09
wadim1c
Была аналогичная проблема. Никто (ни наш дилер, ни те, к кому обращался тут, на форуме) не мог внятно объяснить причины проблемы и методов её решения.
Огромное спасибо за четкие пояснения!! Теперь вместо постоянно занятых 8-10 Гб имеем максимум 2 Гб (это при общем объеме 12 Гб памяти на сервере). Радости нет предела! 8-)

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 04 березня 2019, 16:38
Ivanhoe
Правильно ли я вас понял?

Качаем отсюда:
http://sourceforge.net/projects/firebir ... p/download вариант файла "Zip kit for manual/custom installs of Classic or Superserver".

В этом архиве находим все файлы dll и exe во всех папках, и заменяем (при остановленной службе горыныча) все такие файлы в соответствующих папках. И усё?

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 04 березня 2019, 17:54
Medoc Man
Ivanhoe писав:
04 березня 2019, 16:38
Правильно ли я вас понял?

Качаем отсюда:
http://sourceforge.net/projects/firebir ... p/download вариант файла "Zip kit for manual/custom installs of Classic or Superserver".

В этом архиве находим все файлы dll и exe во всех папках, и заменяем (при остановленной службе горыныча) все такие файлы в соответствующих папках. И усё?
Полностью всё содержимое архива с заменой файлов.
Затем в firebird.conf переуказать порт на нужный (который был). По-умолчанию, 3050.
Можете сделать бэкап каталога с Firebird перед заменой файлов.

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 04 березня 2019, 18:31
Gevil
Я сделал не много по другому, без обновления файлов Firebird.

Заметил что вся память забивается после автоматического создания бэкапов в медке.

Сделал так, создал батник с перезапуском службы ZvitGrp1. В планировщике заданий сделал запуск этого батника после окончания создания бэкапов в медке. И теперь каждое утро память на сервере не забита и люди могут нормально работать в медке.

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 04 березня 2019, 18:57
Ivanhoe
Gevil писав:
04 березня 2019, 18:31
Я сделал не много по другому, без обновления файлов Firebird.

Заметил что вся память забивается после автоматического создания бэкапов в медке.

Сделал так, создал батник с перезапуском службы ZvitGrp1. В планировщике заданий сделал запуск этого батника после окончания создания бэкапов в медке. И теперь каждое утро память на сервере не забита и люди могут нормально работать в медке.
У меня тоже работает по часам батник перезапуска службы, для очистки памяти после утреннего резервного копирования. Иначе утром с памятью просто бяда...

Но дело в том, что пара пользователей в терминальном режиме быстро съедают почти все 8 гиг оперативы сервера, и получается, что это не панацея, и таки надо менять релиз горыныча...

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 04 березня 2019, 19:07
Ivanhoe
Medoc Man писав:
04 березня 2019, 17:54
Полностью всё содержимое архива с заменой файлов.
Затем в firebird.conf переуказать порт на нужный (который был). По-умолчанию, 3050.
Можете сделать бэкап каталога с Firebird перед заменой файлов.
Спасибо, камрад! Непременно воспользуюсь Вашим советом!

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 05 березня 2019, 15:07
wadim1c
Medoc Man писав:
04 березня 2019, 17:54

Полностью всё содержимое архива с заменой файлов.
Затем в firebird.conf переуказать порт на нужный (который был). По-умолчанию, 3050.
Можете сделать бэкап каталога с Firebird перед заменой файлов.
Я пользовался рекомендациями выше, то есть заменял именно dll и exe - файлы без переуказания портов. Всё (тьфу три раза) работает.
Но спорить о правильности/неправильности того или иного метода обновления не буду, т.к. не силён в вопросе.
Просто констатирую факт.

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 05 березня 2019, 15:12
Белокопытов Геннадий
При замене файлов в каталоге Firbird необходимо обращать внимание на файл конфигурации firebird.conf, в котором и указан порт по которому работает служба Firbird. Если этот файл был заменен, соответственно нужно указать в нем тот порт по которому работает установленная служба Firbird в системе. Для версии 2.1.7 файл firebird.conf можно не заменять.

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 05 березня 2019, 15:13
Medoc Man
wadim1c писав:
05 березня 2019, 15:07
Я пользовался рекомендациями выше, то есть заменял именно dll и exe - файлы без переуказания портов. Всё (тьфу три раза) работает.
Но спорить о правильности/неправильности того или иного метода обновления не буду, т.к. не силён в вопросе.
Просто констатирую факт.
Просто если установлено несколько экземпляров M.E.Doc (условно, M.E.Doc #1, M.E.Doc #2, M.E.Doc #3) - то у каждого будет свой отдельный порт (по-умолчанию, 3050, 3051 и 3052 соответственно).
Если Вы решили в M.E.Doc #2 провернуть действия с заменой Firebird - то у него (согласно файла конфигурации) порт станет так же 3050 (стандартный), как и у M.E.Doc #1. А дальше будет неизвестно что: что к чему через что будет подключаться.
По спецификациям, один экземпляр Firebird спокойно может работать сразу с несколькими базами данных (и порт для подключения так же будет один). Но я подобную ситуацию не воспроизводил и утверждать не возьмусь. И рекомендовать, соответственно, тоже.

В Вашем же случае, вероятно, был единый экземпляр M.E.Doc с "дефолтным" портом 3050, поэтому замена файлов Firebird прошла... без ощущений ;)

Re: Загрузка всей оперативной памяти (12ГБ). Терминальный сервер. Большая БД. Обновление Firebird до 2.1.7

Додано: 05 березня 2019, 16:59
wadim1c
Medoc Man писав:
05 березня 2019, 15:13
В Вашем же случае, вероятно, был единый экземпляр M.E.Doc с "дефолтным" портом 3050, поэтому замена файлов Firebird прошла... без ощущений ;)
Именно так :)