размер очереди превышен

Помечено: 

Просмотр 14 сообщений - с 1 по 14 (из 14 всего)
  • Автор
    Записи
  • #45308
    manjey73
    Участник

    2026-10-07 15:34:36 [scada12][root][ERR] Источник данных ScadaServer: Невозможно добавить данные в очередь «Очередь исторических данных». Максимальный размер очереди 5000 превышен

    Уже поднял параметр до 5000 тысяч, ошибка та же, появляется очень быстро.
    Кроме Симулятора и счетчика Меркурий нет больше ничего.
    Установка по умолчанию на Debian 12

    #45309
    manjey73
    Участник

    Видео.

    Как-то это ненормально. Увеличил очередь в конфиге Коммуникатора до 10000
    Система стоит на Виртуалке.

    #45312
    manjey73
    Участник

    Что такого посылает драйвер, что происходит превышение очереди в логе Коммуникатора?

    Сейчас отключил драйвер Меркурия и ошибка с переполнением ушла.

    Какой метод необходимо смотреть и с чем может быть связано?

    Счетчик при этом читался раз в 30 секунд.

    #45313
    manjey73
    Участник

    Каким-то образом связано с чтением профилей мощностей и расчетами дат при чтении.
    На Net8 все работало корректно, на Net10 не работает.
    Либо как-то иначе работают методы в Коммуникаторе, где это происходит.

    Были какие-то отличия в этой части ?

    #45314
    manjey73
    Участник

    Не указал какие части 🙂

    Речь идет о работе со срезами архивов из драйвера.

    #45318
    manjey73
    Участник

    Интересно, только сегодня поставил виртуалку, а при работе со срезами, оно мне на несколько дней в прошлое понаписало непонятно как, чего не было на 6.4.7 при использовании net8

    #45320
    manjey73
    Участник

    И еще попутный вопрос, а срабатывает ли Terminated при остановке линии?

    public override void OnCommLineTerminate()
    {
    DeviceData.Invalidate(); — и вот у меня переменные не переходят в --- это состояние, хотя на 6.4.7 это срабатывало

    #45321
    manjey73
    Участник

    проверил DeviceData.Invalidate(); в OnCommLineTerminate() на 6.4.7 — тоже не перевело переменные в ---

    Соответственно как это сделать правильно? В другом драйвере вроде делал, переводило вроде как.

    А вот со срезами архивов на 6.5 как-то иначе работает. поведение отличается. Буду искать причину как время появится, так что вопрос актуальный, были ли какие-то изменения?

    #45322
    manjey73
    Участник

    На счет срезов пока вопрос снимается, почему-то у меня счетчик отстал на 5 дней 🙂

    #45323
    manjey73
    Участник

    Собственно осталось понять, почему перестало работать Invalidate() в части Terminate()

    сейчас проверил на 6.4.7 — тоже переменные сразу не переходят в ---
    Хотя ранее вроде сразу все переменные сбрасывались, если в Terminate() использовать подобный код.

    #45324
    manjey73
    Участник
            public void Invalidate()
            {
                foreach (DeviceTag deviceTag in deviceTags)
                {
                    // exclude status tag
                    if (deviceTag.Code != CommUtils.StatusTagCode)
                        Invalidate(deviceTag.Index);
                }
            }

    Ну вроде как CnlData должна стать Empty кроме канала Status, судя по коду. Но не становится, зависают значения и через 300 сек по настройкам сервер переводит в невалидное состояние.
    Почему не очищается CnlData ????

    #45327
    Mikhail
    Модератор

    Речь идет о работе со срезами архивов из драйвера.

    Проверяйте, сколько срезов создаётся. Если слишком много, то скачивайте их постепенно, не все сразу.

    срабатывает ли Terminated при остановке линии?

    Если Коммуникатор останавливает линию связи, свойство Terminated равно true. Желательно проверять его в коде и завершать работу метода Session. Иначе Коммуникатор не сможет своевременно остановить линию связи.

    #45328
    Mikhail
    Модератор

    Когда линия связи завершена, оставшиеся данные могут быть проигнорированы и не переданы на Сервер. Точно не помню.

    #45330
    manjey73
    Участник

    Если Коммуникатор останавливает линию связи, свойство Terminated равно true. Желательно проверять его в коде и завершать работу метода Session. Иначе Коммуникатор не сможет своевременно остановить линию связи.

    не совсем понимаю. Я просто жму например Остановить линию или Остановить Коммуникатор. В данном случае как я завершу Session, например она еще не началась, скажем период 30 сек а я нажал остановку между?

    Вот о чем речь то. То есть я делаю остановку Коммуникатора, потом отключаю Линию связи из опроса и запускаю Коммуникатор снова. И тут выясняется, что значения в каналах остались, просто через время настройки они станут серыми.

    А раньше работало так, что они в таком случае превращались в --- сразу при остановке линии. Правда не помню, на какой версии это было?

Просмотр 14 сообщений - с 1 по 14 (из 14 всего)
  • Для ответа в этой теме необходимо авторизоваться.