Стартовая страница › Форумы › Разработка и интеграция › размер очереди превышен
Помечено: вопрос
- В этой теме 13 ответов, 2 участника, последнее обновление 15 часов, 29 минут назад сделано
manjey73.
-
АвторЗаписи
-
07.10.2026 в 15:37 #45308
manjey73Участник2026-10-07 15:34:36 [scada12][root][ERR] Источник данных ScadaServer: Невозможно добавить данные в очередь «Очередь исторических данных». Максимальный размер очереди 5000 превышен
Уже поднял параметр до 5000 тысяч, ошибка та же, появляется очень быстро.
Кроме Симулятора и счетчика Меркурий нет больше ничего.
Установка по умолчанию на Debian 1207.10.2026 в 15:50 #45309
manjey73УчастникКак-то это ненормально. Увеличил очередь в конфиге Коммуникатора до 10000
Система стоит на Виртуалке.07.10.2026 в 16:51 #45312
manjey73УчастникЧто такого посылает драйвер, что происходит превышение очереди в логе Коммуникатора?
Сейчас отключил драйвер Меркурия и ошибка с переполнением ушла.
Какой метод необходимо смотреть и с чем может быть связано?
Счетчик при этом читался раз в 30 секунд.
07.10.2026 в 17:08 #45313
manjey73УчастникКаким-то образом связано с чтением профилей мощностей и расчетами дат при чтении.
На Net8 все работало корректно, на Net10 не работает.
Либо как-то иначе работают методы в Коммуникаторе, где это происходит.Были какие-то отличия в этой части ?
07.10.2026 в 19:34 #45314
manjey73УчастникНе указал какие части 🙂
Речь идет о работе со срезами архивов из драйвера.
07.10.2026 в 21:51 #45318
manjey73УчастникИнтересно, только сегодня поставил виртуалку, а при работе со срезами, оно мне на несколько дней в прошлое понаписало непонятно как, чего не было на 6.4.7 при использовании net8
07.10.2026 в 22:06 #45320
manjey73УчастникИ еще попутный вопрос, а срабатывает ли Terminated при остановке линии?
public override void OnCommLineTerminate()
{
DeviceData.Invalidate(); — и вот у меня переменные не переходят в---это состояние, хотя на 6.4.7 это срабатывало08.10.2026 в 09:30 #45321
manjey73Участникпроверил DeviceData.Invalidate(); в OnCommLineTerminate() на 6.4.7 — тоже не перевело переменные в
---Соответственно как это сделать правильно? В другом драйвере вроде делал, переводило вроде как.
А вот со срезами архивов на 6.5 как-то иначе работает. поведение отличается. Буду искать причину как время появится, так что вопрос актуальный, были ли какие-то изменения?
08.10.2026 в 10:19 #45322
manjey73УчастникНа счет срезов пока вопрос снимается, почему-то у меня счетчик отстал на 5 дней 🙂
08.10.2026 в 10:27 #45323
manjey73УчастникСобственно осталось понять, почему перестало работать Invalidate() в части Terminate()
сейчас проверил на 6.4.7 — тоже переменные сразу не переходят в
---
Хотя ранее вроде сразу все переменные сбрасывались, если в Terminate() использовать подобный код.08.10.2026 в 11:17 #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 ????08.10.2026 в 14:16 #45327
MikhailМодераторРечь идет о работе со срезами архивов из драйвера.
Проверяйте, сколько срезов создаётся. Если слишком много, то скачивайте их постепенно, не все сразу.
срабатывает ли Terminated при остановке линии?
Если Коммуникатор останавливает линию связи, свойство Terminated равно true. Желательно проверять его в коде и завершать работу метода Session. Иначе Коммуникатор не сможет своевременно остановить линию связи.
08.10.2026 в 14:17 #45328
MikhailМодераторКогда линия связи завершена, оставшиеся данные могут быть проигнорированы и не переданы на Сервер. Точно не помню.
08.10.2026 в 14:20 #45330
manjey73УчастникЕсли Коммуникатор останавливает линию связи, свойство Terminated равно true. Желательно проверять его в коде и завершать работу метода Session. Иначе Коммуникатор не сможет своевременно остановить линию связи.
не совсем понимаю. Я просто жму например Остановить линию или Остановить Коммуникатор. В данном случае как я завершу Session, например она еще не началась, скажем период 30 сек а я нажал остановку между?
Вот о чем речь то. То есть я делаю остановку Коммуникатора, потом отключаю Линию связи из опроса и запускаю Коммуникатор снова. И тут выясняется, что значения в каналах остались, просто через время настройки они станут серыми.
А раньше работало так, что они в таком случае превращались в
---сразу при остановке линии. Правда не помню, на какой версии это было? -
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.