Начало » Использование СУБД » Firebird, HQbird, InterBase » Firebird 5.0.1 использование памяти
Firebird 5.0.1 использование памяти [сообщение #5721] |
Sat, 16 November 2024 23:05 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
Очень давно не использовал Firebird, а тут возникла необходимость куда-то складывать небольшое количество телеметрии (несколько записей в минуту). Решил попробовать применить для этой задачи firebird.
Установил 5.0.1 docker/linux. Все настройки по умолчанию, кроме AuthServer и WireCrypt (особенность клиента). Одна табличка 99,9(9)% INSERTы. Размер базы на данный момент 32 Мб. При этом в topе написано, что процесс firebird потребляет 38% от 64Гб памяти. На мой вкус это как-то многовато. В первую очередь в голову приходит идея ограничить контейнер, но мне кажется это как-то грубо.
[Обновления: Sat, 16 November 2024 23:10] Известить модератора
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5723 является ответом на сообщение #5722] |
Sun, 17 November 2024 11:35 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
basid писал(а) Sun, 17 November 2024 11:23Ну и самое главное - научитесь уже разделять адресное пространство (VIRT) и занятую память (RES).
Ну так-то да, наверное вы правы, но мне как-то (может быть субъективно) кажется что для описанной ситуации такое использование даже VIRT не естественно. Или я занимаюсь ерундой и не надо об этом думать?
ps я посмотрел документацию:
%MEM — Represents the percentage of physical memory used by the process.
т.е это RES
[Обновления: Sun, 17 November 2024 11:49] Известить модератора
|
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5726 является ответом на сообщение #5723] |
Sun, 17 November 2024 19:25 |
basid
Сообщений: 166 Зарегистрирован: June 2022 Географическое положение: Asia/Irkutsk
|
Senior Member |
|
|
IlyaT писал(а) Sun, 17 November 2024 16:35мне как-то (может быть субъективно) кажется что для описанной ситуации такое использование даже VIRT не естественно Не забыли, что: Установил 5.0.1 docker/linux. Все настройки по умолчанию, кроме AuthServer и WireCrypt (особенность клиента)?
По умолчанию Firebird 3+ работает в режиме SuperServer с 2048 страницами кэша (на базу), что даёт 64 МБ при максимальном размере страницы. Ещё до 64 МБ (в четвёрке и далее - тоже на базу) даёт буфер временных объектов.
Таким образом, если вы ничего не путаете (а технической информации от вас пока не было), то собственно сервер СУБД может занять что-то около четверти гигабайта в вашем случае и при самых запредельных предоположениях.
Следовательно, если у вас какое-то гигантское потребление памяти, то винить в этом вам нужно самого себя. Потому, что объекты клиентских подключений - зона ответственности программиста.
P.S.
Научитесь предосталять технически полезные сведения и любое сообщество, внезапно, окажется гораздо менее токсичными.
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5727 является ответом на сообщение #5726] |
Sun, 17 November 2024 20:11 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
IlyaT писал(а) Sun, 17 November 2024 16:35
Научитесь предосталять технически полезные сведения и любое сообщество, внезапно, окажется гораздо менее токсичными.
Я готов предоставить любую необходимую информацию, только не знаю какую конкретно надо предоставить. Вы скажите - я всё предоставлю что скажете. Из того, что вы сказали, вырисовывается что память съедают объекты клиентских подключений. Это похоже на правду - я посмотрел, в MON$ATTACHMENTS больше 500 записей, хотя, по моему разумению подключение должно быть примерно одно. Кажется что клиент не всегда закрывает соединения, но создает новые.
Я не совсем автор клиента (не хочу вас грузить лишними подробностями, но если надо то поясню подробнее) и ограничен в возможностях изменить что-либо с клиентской стороны. Я добавил в конфиг
ConnectionIdleTimeout = 300
но кажется что это ничего не изменило.
[Обновления: Sun, 17 November 2024 20:22] Известить модератора
|
|
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5731 является ответом на сообщение #5730] |
Mon, 18 November 2024 03:58 |
fraks
Сообщений: 140 Зарегистрирован: June 2022 Географическое положение: Новосибирск
|
Senior Member |
|
|
Ну и в рамках этой темы, совет писАть телеметрию в плоские файлы - вполне хорош. Потом эти файлы можно и в базу загрузить, если потребуется. И раз вы не писатель клиента, то и ответственность будет разделена - писатель пишет в файлы, и то что он вам в файлах передал то вы к себе и загрузили. И никто кривыми ручками в базу писАть не лезет.
Вообще, по канонам, так и надо делать для телеметрии, ибо база дело такое, 100% быть в онлайне не может, иногда требуется обслуживание, во время которого данные будут утеряны т.к. база недоступна.
[Обновления: Mon, 18 November 2024 03:59] Известить модератора
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5733 является ответом на сообщение #5731] |
Mon, 18 November 2024 09:17 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
fraks писал(а) Mon, 18 November 2024 03:58
Вообще, по канонам, так и надо делать для телеметрии, ибо база дело такое, 100% быть в онлайне не может, иногда требуется обслуживание, во время которого данные будут утеряны т.к. база недоступна.
КМК это больше про скорость вставки. Понятно что "пакетно" вставлять быстрее чем "поштучно", но я специально обратил внимание, что у меня очень маленький поток.
Зато я могу в реальном времени получать данные на дашборде для чего это всё собственно и затевалось. В моём случае отсутствие сервера БД на некоторое время более чем допустимо, но даже если бы это было не так, мне было бы проще поставить ещё один сервер (можно вообще независимый от первого) и писать туда то же самое, чем городить отдельный костыль csv2firebird и присматривать за ним.
ps Каноны это вообще дело такое... Я эксплуатировал несколько относительно крупных промышленных систем уровня MES/SCADA и во всех случаях они писали ТМ непосредственно в БД. Другой вопрос, что это были другие БД типа Osisoft Pi, Cassandra, различные TSDB итп Но это опять же про скорость вставки.
|
|
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5739 является ответом на сообщение #5737] |
Mon, 18 November 2024 16:08 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
SD писал(а) Mon, 18 November 2024 15:51IlyaT писал(а) Mon, 18 November 2024 07:17
Зато я могу в реальном времени получать данные на дашборде для чего это всё собственно и затевалось.
Для этой задачи тем более использовать SQL сервер... неправильное решение. Отображение в реальном время обеспечивают системы передачи сообщений типа Что-то-там-MQ.
А график как я из очереди сообщений построю?
И вы можете русским языком объяснить что значит "неправильное"? У меня есть потребности, я эти потребности каким-то образом закрываю, стараясь при этом потратить минимум человеческих (в первую очередь) и вычислительных (опционально) ресурсов. Что не так? Я в рай из-за этого не попаду? Или что?
[Обновления: Mon, 18 November 2024 16:16] Известить модератора
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5740 является ответом на сообщение #5739] |
Mon, 18 November 2024 16:32 |
pastor
Сообщений: 83 Зарегистрирован: June 2022 Географическое положение: Калуга
|
Member |
|
|
IlyaT писал(а) Mon, 18 November 2024 16:08SD писал(а) Mon, 18 November 2024 15:51IlyaT писал(а) Mon, 18 November 2024 07:17
Зато я могу в реальном времени получать данные на дашборде для чего это всё собственно и затевалось.
Для этой задачи тем более использовать SQL сервер... неправильное решение. Отображение в реальном время обеспечивают системы передачи сообщений типа Что-то-там-MQ.
А график как я из очереди сообщений построю?
И вы можете русским языком объяснить что значит "неправильное"? У меня есть потребности, я эти потребности каким-то образом закрываю, стараясь при этом потратить минимум человеческих (в первую очередь) и вычислительных (опционально) ресурсов. Что не так? Я в рай из-за этого не попаду? Или что?
человек пытается переманить Вас на светлую сторону силы и сделать так, чтобы Ваши данные попадали в БД в несколько этапов.
чуждый Вам клиент складывает поминутные данные в текстовый файлик.
а дружественный демон смотрит такие файлики и складывает их в БД. а если их нет - вопиЕт об оном.
так достигается изоляция БД от кого попало. реалтайм и благорастворение воздухов.
[Обновления: Mon, 18 November 2024 16:32] Известить модератора
|
|
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5745 является ответом на сообщение #5744] |
Mon, 18 November 2024 22:37 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
basid писал(а) Mon, 18 November 2024 20:26Использовать в разработке древний и заброшенный проект - так себе решение.
Не такой уж он и заброшенный - в прошлом году обновлялся всего лишь )))
На самом деле, вы конечно правы. Просто у меня уже много логики на Node-Red накручено, поэтому тут правильнее было бы просто другую СУБД применить с более живыми коннекторами. Но в конечном итоге кажется что у меня все получилось (пусть и с небольшой суетой), ресурсов firebird потребляет меньше чем всё остальное. Так что все счастливы, танцуют и поют песни как в индийском фильме.
[Обновления: Mon, 18 November 2024 22:40] Известить модератора
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5748 является ответом на сообщение #5739] |
Tue, 19 November 2024 01:59 |
SD
Сообщений: 417 Зарегистрирован: August 2022
|
Senior Member |
|
|
IlyaT писал(а) Mon, 18 November 2024 14:08А график как я из очереди сообщений построю?
Натурально, принимая поток данных, складывая его в массив, отрисовывая этот массив в битмап и отображая этот битмап на экране с частотой развёртки. С какой частью этого алгоритма у тебя проблема?
IlyaT писал(а) Mon, 18 November 2024 14:08
И вы можете русским языком объяснить что значит "неправильное"?
Есть множество инструментов, которые подходят для решения заданной задачи. Есть множество инструментов, которыми умеет пользоваться разработчик. Если эти множества пересекаются - задача решается правильно, то есть продукт выдаёт нужный результат быстро и стабильно. Если нет - начинается мучительное натягивание совы на глобус, задача решена неправильно, продукт корёжит, он жрёт память, другие ресурсы и далее по списку симптомов тобою описанных выше.
СУБД предназначены для долговременного хранения информации и её обработки. Телеметрия и реал-тайм отображение графиков - совершенно другие задачи, для решения которых следует использовать другие инструменты.
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5749 является ответом на сообщение #5748] |
Tue, 19 November 2024 08:18 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
SD писал(а) Tue, 19 November 2024 01:59СУБД предназначены для долговременного хранения информации и её обработки.
Интересный у вас подход - самому придумывать нелепые определения, а потом возмущаться несовершенством окружающего мира, который отказывается им следовать.
зы Разработчики in-memory движков, которые есть уже и в большинстве популярных РБД:
[Обновления: Tue, 19 November 2024 08:22] Известить модератора
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5750 является ответом на сообщение #5745] |
Tue, 19 November 2024 08:57 |
basid
Сообщений: 166 Зарегистрирован: June 2022 Географическое положение: Asia/Irkutsk
|
Senior Member |
|
|
IlyaT писал(а) Tue, 19 November 2024 03:37Не такой уж он и заброшенный - в прошлом году обновлялся всего лишь ))) Обновлялся. В части, которая вообще никак не связана с СУБД Firebird.
node-red-contrib-node-firebird обновлялся более пяти лет назад. И то, что вам пришлось включить легаси-авторизацию - хороший такой маркер.
А ещё, пробежавшись по npm-зависимостям обнаружил, что:Цитата:node-firebird 1.1.9
• Public
• Published 4 months ago
Pure JavaScript and Asynchronous Firebird client for Node.js
Changelog for version v0.2.x
added auto-reconnect
added sequentially selects
events for connection (attach, detach, row, result, transaction, commit, rollback, error, etc.)
performance improvements
supports inserting/updating buffers and streams
reading blobs (sequentially)
pooling
database.detach() waits for last command
better unit-test Т.е. клиент умел корректно отключаться от базы уже в версии 0.0.2.
А если заглянуть в гитхаб клиента, то Srp он научился около двух лет назад:Цитата:release v1.1.0
Srp implementation by @maratth in #242 Про Srp256 ничего не сказано, но - хотя бы так.
Резюмируем.
Если брать более-менее актуальную версию клиента Firebird для NodeJS, то она умеет и Srp и пул подключений.
Следовательно, если ваше приложение для NodeJS использует легаси-авторизацию и не освобождает подключения (путём закрытия или возврата в пул, если вы его используете), то это не проблемы клиента и уж тем более - не проблемы сервера.
|
|
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5753 является ответом на сообщение #5752] |
Tue, 19 November 2024 12:54 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
fraks писал(а) Tue, 19 November 2024 11:31
Тут было показано что выбранный стек совершенно достаточен для того что бы корректно работать с коннектами, выбранные инструменты это умеют. Нужно только ручки подвыпрямить.
Тут было показано что NodeJS это умеет, а я использую не NodeJS а "Node Red" (что очевидно не одно и то же).
Вы просто не представляете что из себя представляет коннектор для Node Red. Обратите внимание на документацию https://flows.nodered.org/node/node-red-contrib-node-firebir d-role
Там в одном месте указываются креденшиалсы и адрес сервера, а в другое заталкиваются запросы.Всё! Никаких других возможностей там нет.Совершенно нечего выпрямлять. Автор flow не управляет соединениями, в теории этим должен заниматься коннектор.
Править исходный код коннектора я не готов если вы это имеете в виду под "выпрямлением ручек".
[Обновления: Tue, 19 November 2024 13:01] Известить модератора
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5754 является ответом на сообщение #5753] |
Tue, 19 November 2024 15:45 |
basid
Сообщений: 166 Зарегистрирован: June 2022 Географическое положение: Asia/Irkutsk
|
Senior Member |
|
|
Читайте, пожалуйста, внимательно, а не то, что вам хочется:Цитата:Если брать более-менее актуальную версию клиента Firebird для NodeJS, то она умеет и Srp и пул подключений.
Следовательно, если ваше приложение для NodeJS ...
Клиент Firebird для NodeJS, приложение для NodeJS.
P.S.
Если я не умею готовить NodeJS, то это ещё не означает, что я совсем не понимаю, как он работает.
|
|
|
Re: Firebird 5.0.1 использование памяти [сообщение #5755 является ответом на сообщение #5754] |
Tue, 19 November 2024 16:04 |
IlyaT
Сообщений: 14 Зарегистрирован: November 2024
|
Junior Member |
|
|
basid писал(а) Tue, 19 November 2024 15:45Читайте, пожалуйста, внимательно, а не то, что вам хочется
Простите, но я правда не понимаю что вы мне хотите сказать. Я не разрабатываю под NodeJS, моё приложение не для NodeJS, я "разрабатываю" под Node Red. В Node Red я не могу управлять подключениями. В коннекторе нет такой функциональности.
[Обновления: Tue, 19 November 2024 16:05] Известить модератора
|
|
|
|
|
Переход к форуму:
Текущее время: Sat Dec 21 20:24:19 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01188 секунд
|