Transient свойства объектов

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

AK1
Сообщения: 141
Зарегистрирован: Чт фев 13, 2020 6:39 pm
Благодарил (а): 23 раза
Поблагодарили: 34 раза

Re: Transient свойства объектов

Сообщение AK1 » Сб дек 30, 2023 7:20 am

Можно посмотреть на проблему с другой стороны. А есть ли необходимость вычисления среднего за период? Для примера. Контроллер солнечной панели. С него можно снимать данные с любой периодичностью, начиная с 10 сек. Передаются ток, напряжение, мощность, но нет накопленной энергии. Вычисляется на сервере. Затестил периодичность 10 сек и 1 минута. Итоговая разница за сутки менее 1%. Так стоит ли грузить сервер доп.вычислениями, когда можно брать выборки с большей периодичностью? Ну если, конечно, это не научные исследования.
ai91
Сообщения: 17
Зарегистрирован: Вт окт 23, 2018 11:17 pm
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: Transient свойства объектов

Сообщение ai91 » Сб дек 30, 2023 7:37 am

Фуххх. Пришлось повозиться с отладкой :-)
Подлянка обнаружилась вот здесь:
https://github.com/sergejey/majordomo/b ... ss.php#L99
Сделал array_shift при превышении 255 символов.

Конечно понимаю что причина в этом легаси:
https://github.com/sergejey/majordomo/b ... l.sql#L128

Но у меня redis. Ограничение бессмысленно.
Однако снимать ограничение только для редиса - нельзя, может аукнуться при деактивации редиса.
По-хорошему надо бы таблицу cached_values сделать varchar'ом (как cached_ws например).

И тут возникает новый вопрос, теперь уже по поводу redis'а.
Установил и активировал его без особого понимания как работает mdm, просто следовал какой-то инструкции, где особого объяснения не было. Я исходил из того что redis это гораздо быстрее чем обычная таблица mariadb. Однако теперь рассмотрел db_terminal и создание cached_values таблицы. Она создается с ENGINE=MEMORY. Собственно вопрос - а зачем нужен redis? Я вижу использование только в caching.class.php. Для систем с малым объемом памяти? Правильно я понимаю что на моём сервере с 8Гб имеет смысл отключить его совсем?
ai91
Сообщения: 17
Зарегистрирован: Вт окт 23, 2018 11:17 pm
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: Transient свойства объектов

Сообщение ai91 » Сб дек 30, 2023 7:49 am

AK1 писал(а):
Сб дек 30, 2023 7:20 am
Можно посмотреть на проблему с другой стороны. А есть ли необходимость вычисления среднего за период? Для примера. Контроллер солнечной панели. С него можно снимать данные с любой периодичностью, начиная с 10 сек. Передаются ток, напряжение, мощность, но нет накопленной энергии. Вычисляется на сервере. Затестил периодичность 10 сек и 1 минута. Итоговая разница за сутки менее 1%. Так стоит ли грузить сервер доп.вычислениями, когда можно брать выборки с большей периодичностью? Ну если, конечно, это не научные исследования.
В моём случае это контроллер который шлёт не только солнечные панели, но и автомобиль, стиралку, сушку, и в том числе текущее потребление всем домохозяйством. Если панели и автомобиль в целом достаточно стабильны в течении минуты, то домохозяйство может удивить. Например в прогретой духовке PID-регуляция температуры генерирует пики потребления от 50 Вт до 3000 Вт, причем дискретные и достаточно периодичные: 40сек 50Вт, потом 10сек 3000 Вт.
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Transient свойства объектов

Сообщение xor » Сб дек 30, 2023 2:38 pm

ai91 писал(а):
Сб дек 30, 2023 7:37 am
Фуххх. Пришлось повозиться с отладкой :-)
Подлянка обнаружилась вот здесь:
https://github.com/sergejey/majordomo/b ... ss.php#L99
Сделал array_shift при превышении 255 символов.

Конечно понимаю что причина в этом легаси:
https://github.com/sergejey/majordomo/b ... l.sql#L128

Но у меня redis. Ограничение бессмысленно.
Однако снимать ограничение только для редиса - нельзя, может аукнуться при деактивации редиса.
По-хорошему надо бы таблицу cached_values сделать varchar'ом (как cached_ws например).

И тут возникает новый вопрос, теперь уже по поводу redis'а.
Установил и активировал его без особого понимания как работает mdm, просто следовал какой-то инструкции, где особого объяснения не было. Я исходил из того что redis это гораздо быстрее чем обычная таблица mariadb. Однако теперь рассмотрел db_terminal и создание cached_values таблицы. Она создается с ENGINE=MEMORY. Собственно вопрос - а зачем нужен redis? Я вижу использование только в caching.class.php. Для систем с малым объемом памяти? Правильно я понимаю что на моём сервере с 8Гб имеет смысл отключить его совсем?
там и в историю недавно писалось не более 255 символов при размере свойства 10к символов) у себя давно кэш сделал 2к поле. про редис - в качестве кэша не использую. вообще, всю базу держу на рам-диске. и тип мемори для таблиц уже не актуален)
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Transient свойства объектов

Сообщение Logrus » Сб дек 30, 2023 6:59 pm

ai91 писал(а):
Сб дек 30, 2023 7:37 am
Фуххх. Пришлось повозиться с отладкой :-)
Подлянка обнаружилась вот здесь:
https://github.com/sergejey/majordomo/b ... ss.php#L99
Сделал array_shift при превышении 255 символов.

Конечно понимаю что причина в этом легаси:
https://github.com/sergejey/majordomo/b ... l.sql#L128

Но у меня redis. Ограничение бессмысленно.
Однако снимать ограничение только для редиса - нельзя, может аукнуться при деактивации редиса.
По-хорошему надо бы таблицу cached_values сделать varchar'ом (как cached_ws например).

И тут возникает новый вопрос, теперь уже по поводу redis'а.
Установил и активировал его без особого понимания как работает mdm, просто следовал какой-то инструкции, где особого объяснения не было. Я исходил из того что redis это гораздо быстрее чем обычная таблица mariadb. Однако теперь рассмотрел db_terminal и создание cached_values таблицы. Она создается с ENGINE=MEMORY. Собственно вопрос - а зачем нужен redis? Я вижу использование только в caching.class.php. Для систем с малым объемом памяти? Правильно я понимаю что на моём сервере с 8Гб имеет смысл отключить его совсем?
наверное никто не ответит на эти вопросы, у себя пришел к мнению что редис однозначно медленнее т.к. там медленное подключение к нему каждый раз, а сами кэш функции и бд существенно переработал, но тут уже решать каждому что ему и как надо, имхо
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
ai91
Сообщения: 17
Зарегистрирован: Вт окт 23, 2018 11:17 pm
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: Transient свойства объектов

Сообщение ai91 » Сб дек 30, 2023 11:59 pm

Logrus писал(а):
Сб дек 30, 2023 6:59 pm
наверное никто не ответит на эти вопросы, у себя пришел к мнению что редис однозначно медленнее т.к. там медленное подключение к нему каждый раз, а сами кэш функции и бд существенно переработал, но тут уже решать каждому что ему и как надо, имхо
Штош, сделал замеры :-)
В моём случае действительно редис не дает выигрыша. Однако и падение производительности на уровне погрешности. Менее 2% при миллионе операций чтения/записи.
Так что отключил к чертям - зачем плодить ненужные сущности :-)
За это сообщение автора ai91 поблагодарил:
Logrus (Вс дек 31, 2023 1:49 am)
Рейтинг: 1.16%
Ответить