1с получить список процессов
(2) Там стоит 0, процессы не перзапускаются, вообще на этой форме все по нулям и приоритет на производительности
(4) Не успел увидеть вопрос снят. Но мне когда-то админы утверждали, что частый ребут сервера - вреден. Даже раз в неделю не хотели делать.
(3) тогда другой вариант: кто-то запускает дикий жесткий внешний отчет (или встроенный отчет, но без отборов - за все года по всем аналитикам), который сжирает всю память в ноль.
(7) памяти 32 гига , 18 на SQL отдано, остальное рпхостам, в момент пиковой нагрузки было доступно еще 4 гига, проблем в нехватке памяти нет.
А по поводу перегрузки сервера каждый день, это было сделано для разгона юзеров, но не работало, после перегрузки сеансы снова восстанавливались, может еще здесь как то собака порылась. И остановка службы 1с батниками и запуск через час тоже не помогали. Я так и не понял почему такое происходит.
(10) Вот сейчас смотрю, бух записьвсего 1236794654 , спрашиваю что делала, говорит только платежки набивала.. и по памяти она рекордсмен 1989947775.
Врать не станет
ну это я уже смотрю сейчас всего (сеанс начать 3 часа назад), попробую в момент загрузки смотреть текущие значения, но уже смотрел не смог отловить кто и что причина.
"после перегрузки сеансы снова восстанавливались" - еслиуж перегружать, то перезагружать оба сервера (1С и SQL) Сервер SQL "восстанавливает" прерванные соединения. Имхо. У Вас действительно проблемы. не только с железом :)
(16) 8.3
(14) 1с и скл живут на одном сервере
И еще момент восстанавливали сеансы базы с толстыми клиентами, и сами базы в режиме совместимости с 8.2 8.1. Но это так отступление от темы, потому что это происходит и на другом сервере где проблем с пиковыми нагрузками нет.
Сейчас написана иб которая только и занимается тем что удаляет сеансы пользователей на кластерах, сейчас проблем с бэкапами нет. (И причина тоже не в ней, написана она была уже во время проблем с производительностью)
13. Стандартные платежки БП3
(18) Да, спс, я знаю - у Вас платформа 8.3.10.2639. У меня 8.3.11.3034 и сейчас сидят два десятка пользователей на одном(!) rphost-е сервера 1С - ЧЯДНТ?
Ну возможно просто проц. слабый, сервер такой себе в плане процессора. В среднем порядка 70 сеансов, проц XEON E3-1230 3.3 ГГЦ
Но блин иногда неделями же работает без проблем, и пиковая нагрузка проходит в течении 10-30 минут
(офф) Имхо, в 1С сложно угадать что не так пошло. Помню, было дело, поймал ошибку платформы, когда всю память сервер активно забивал в то время, когда в базе работали только рег.задания без активных пользователей.
(22) Там вообще по нулям, эта колонка мне знакома когда переводил с бп2 - бп3 там висели большие значения и сам перевод висел но сервер работал как надо.
Если у автора действительно rphostЫ, то по Диспетчеру задач на закладка "Подробности" можно подсмотреть идентификатор процесса, который грузит сервер, а в оснастке администрирования серверов 1С, в сеансах, можно посмотреть кто сидит на этом процессе, чем занят - журнал регистрации. Круг ссужается. Как вариант, имхо, интерес также вызывают те пользователи, которые грузят сервер, но в журнале регистрации действий не имеют записей в этот период - не исключено что они грузят сервер отчетами.
(27) Спасибо, буду пробовать.
Но вешает базу не один рпхост, нагрузка немного размазана по 2-3 процессам.
(32) тоже самое что и в (27) но уже доступно с учетки ИТС, спасибо
Сейчас посмотрел по "Время вызова общее" с утра максимальное значение 104.186 затем 84, 68, 24 (это с утра, примерно 4-5 часов).
В принципе узнал вещи которые не знал, попробую проанализировать.
(0) > под каждую базу создается свой рпхост
Зачем?
Этой фигнёй имеет смысл страдать в исключительных случаях в целях расследования проблем. Например, когда никак не удаётся вычислить, какая именно ИБ сбоит.
(4) > сервер перегружается каждую ночь
Зачем? Вам больше заняться нечем?
(8) > это было сделано для разгона юзеров
Зачем? Чем вам мешают работающие юзеры?
> остановка службы 1с батниками и запуск через час тоже не помогали
Это от того, что кому-то лень почитать документацию. Пример "правильного" батника от 1С (для 64-битного сервера, у которого папка кластера размещена по нетиповому пути "F:\srvinfo\reg_1541", а пользователь, от имени которого работает служба 1С называется Admin_1C):
set LOG_FILE="scripts.log"
set SERVICE_1C_NAME="1C:Enterprise 8.3 Server Agent (x86-
64)"
set SERVICE_RAS_NAME="1C:Enterprise 8.3 Remote Server"
echo done stop %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
echo clean temp %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
echo done clean temp %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
При необходимости в батник следует добавить еще остановку службы сервера хранилища и службу агента ЦКК.
Потом не забыть всё это хозяйство запустить. У 1С на ИТС есть соответствующий батничек для старта всех служб.
А вообще по сути дела.
Перестаньте маяться ерундой.
Настройте технологический журнал и счетчики производительности винды.
(35) Что дадут счетчики производительности винды, покажет что у меня проц на серваке загружен до 100%, я и так это знаю. Мои счетчики производительности в виде юзеров мне сразу сообщают об этом. Дальше то что?
Технологический журнал попробую включить посмотреть, но плохо себе представляю что там смотреть, пару раз всего пользовался когда искал ошибку.
А почему не создавать проц. под каждую иб, в этом есть что-то что может привести к проблемам?
(38) в (34) писал, это разве большие показатели для отсчета с утра. Да и база которая показывает масимум появилась уже после проблем с производительностью
Проверено на: Операционная система Windows 2016/2019 Сервер приложений 1С 8.3.16/8.3.17 Windows PowerShell 5.1 На более младших версиях не проверялось, возможно потребуется доработать напильником
В качестве параметра/аргумента скрипта передаётся строка формата "Имя_сервера[:Порт]". Параметр не является обязательным и по умолчанию задает значение текущего сервера:
В качестве способа получения данных с кластера 1С решил использовать "V83.COMConnector"
После успешного подключения к кластеру, стал актуален вопрос что именно мы хотим собрать с кластера:
- Сбор параметров сервера и кластера
- Обнаружение всех рабочих сервер в кластере и сбор их параметров
- Обнаружение всех рабочих процессов кластера и сбор их параметров
- Обнаружение информационных баз кластера 1С и сбор их параметров
Далее о каждом из блоков подробнее
Изначально пробовал собирать данные разными скриптами и с заданной периодичностью, однако после не продолжительной эксплуатации пришел к выводу что проще осуществлять сбор сразу всех данных в JSON-формате в одном файле.
1.1. Общие сведения о сервере
Статус службы сервера 1С
Выясняем статус службы Агента сервера.
Название службы агента сервера 1С задаем как макрос в шаблоне "", значение по умолчанию "1C:Enterprise 8.3 Server Agent (x86-64)". Статус получаем стандартным методом Zabbix агента
Запущен технологический журнал
Не однократно возникала ситуация, особенно со стороны не опытных специалистов, что в порыве решить задачу производительности или неизвестной ошибки запускали ТЖ по инструкции из интернет и без дополнительных настроек со сбором всего и вся, на всякий случай (". данных много не бывает . " ). В таких ситуациях важно не пропустить момент и вовремя скорректировать порыв в нужном направлении.
Поскольку ТЖ запускается с пользовательскими параметрами путем помещения файла "logcfg.xml" в каталоге конфигурационных файлов системы «1С:Предприятие», мониторим его наличие через Zabbix агент:
Мониторинг процессов настроен
Проверяем наличие ключа и его значение средствами агента запуская команду PowerShell для корректной работы мониторинга:
Скрипт сборщика данных существует
Проверяем наличие файла скрипта на сервере. Папку задаем как макрос в шаблоне "", значение по умолчанию "C:\Program Files\Zabbix Agent\scripts". Проверка осуществляется стандартным методом Zabbix агента:
Версия службы и Архитектура
Определяем версию службы, архитектуру (разрядность), а так-же путь к файлу настроек кластера.
В общих чертах последовательность: через WMI получаем путь из службы где находятся все интересующие нас данные
$path_lst - понадобится позже (путь к файлу конфигурации кластера 1С)
1.2. Параметры кластера
Ранее мы уже получили объект $Cluster, содержащий требуемые нам параметры.
Однако помимо стандартных параметров кластера в систему мониторинга нам потребуется передавать сведения о сеансах кластера. Объект $Cluster соответствует типу System.__ComObject, нам потребуется конвертировать его в PSCustomObject, для этого используем командлеты ConvertTo-Json и ConvertFrom-Json:
Добавим параметры, соответствующие ранее полученным: Версию службы и Архитектуру
Отслеживаем следующие параметры кластера, которые уже присутствуют с в объекте $Cluster
Допустимый объем памяти
Записывать дамп процесса при превышении критического объема памяти
Режим распределения нагрузки
Уровень отказоустойчивости
Проблемные процессы завершать через
Интервал перезапуска
Защищенное соединение
IP порт
Принудительно завершать проблемные процессы
Количество рабочих серверов
Получение данных о рабочих серверах кластера рассмотрим ниже, здесь-же просто опишу созданный элемент данных:
1.3. Сведения о сеансах кластера
Получаем сеансы кластера:
Получаем список сессий и пользователей кластера 1С:
Количество сессий кластера
Количество пользователей кластера
Количество клиентов кластера
Собираем количество подключений через толстых и тонких клиентов, для нас не критичен вариант клиента.
Количество WEB-сервисов кластера
Количество фоновых заданий кластера
Количество COM+ подключений кластера
Количество веб-клиент кластера
Отдельно хочется отметить проблему, возникшую после перехода с ПРОФ редакции на КОРП - это подключение пользователей к КОРП кластеру с клиентскими ПРОФ ключами. Ситуация такова, что часть клиентских ключей находилось в серверной, а часть на рабочих местах, либо "серверах" отделов. В результате при подключении более 10 таких пользователей, функциональность КОРП пропадала. На это необходимо было реагировать как можно быстрее и желательно до того, как кластер начнет деградировать.
В нашем случае ситуация упрощалась тем, что все КОРП ключи были на 500 пользователей, все прочие - ПРОФ.
Пользователи ПРО
Получаем список всех пользователей с ПРОФ лицензией:
Количество лицензий ПРОФ
Обнаружение всех рабочих серверов кластера:
Данные с рабочих серверов поместим в переменную:
Сохраним количество ядер для каждого из рабочих серверов кластера в отдельную переменную:
Ниже код, каким образом получаем данные со всех серверов:
$counter_processor_total - общая нагрузка на процессор
$counter_processor_12 - нагрузка на первые 12 ядер процессора
Поскольку запрос значений счетчиков монитора ресурсов требует времени на выполнение, а именно по 1 секунде на каждый счетчик. Вроде не много для одного счетчика, но по 13 секунд на каждый из серверов в кластере, в нашем случае блок выше выполнялся 40 секунд. Следовательно надо оптимизировать:
Почему мы не использовали стандартные счетчики Zabbix для получения загрузки процессора? Потому что требовалось создать универсальный шаблон. В этом шаблоне используются данные о загрузке первых 12 ядер и общая нагрузка на процессор, для создания триггера, который проверяет не пропал-ли функционал КОРП-лицензий кластера. На этапе старта проекта - данная проблема была очень актуальна.
Обнаружение всех рабочих процессов кластера:
Поскольку лишние параметра рабочих процессов нам не нужны, оставим только то что собираемся мониторить:
Дополняем каждый из процессов интересующими нас данными:
$sessions_PID - PID процесса в операционной системе
$session_mem - Значения параметров сеанса, потребляющего максимальный объем оперативной памяти на данном рабочем процессе
$session_proc_took - Значения параметров сеанса, у которого максимальное время соединения с СУБД с момента захвата на данном рабочем процессе
$session_CPU - Значения параметров сеанса, потребляющего максимальные процессорные мощности на данном рабочем процессе
$counter_process / $NumberOfCores[$process.HostName] - % нагрузки на процессор вызванный данным рабочим процессом
$process_users.Count - Количество сеансов пользователей на данном рабочем процессе
$process_sessions.Count - Количество сессий на данном рабочем процессе
Поскольку даже у администратора кластера 1С может не быть прав на получение параметров информационной базы, значения параметров информационных баз мы получали отличным способом от описанного выше.
Нам понадобится значение переменной $path_lst, полученной ранее. Это путь к файлу конфигурации кластера 1С, содержащий в себе информацию обо всех информационных базах кластера. Получаем интересующие нас данные через регулярное выражение:
Теперь данные об информационных базах надо структурировать:
"Path" - Идентификатор
"InfoBase" - Информационная база
"Description" - Описание
"DBServerName" - Сервер баз данных
"DBBaseName" - База данных
"Blocked" - Блокировка начала сеансов включена
"StartBlocking" - Время до начала блокировки
"EndBlocking" - Время до окончания блокировки
Остальные данные получаем через "V83.COMConnector":
Объединяем информацию о всех ИБ:
"BaseName" - Название информационной базы
"Sessions" - Количество сессий на данной информационной базе
"Users" - Количество сеансов пользователей на данной информационной базе
"reglaments" - Количество сеансов пользователей регламентных заданий на данной информационной базе
Поскольку все регламентные задания выполняются под соответствующими пользователями, имя которых задано в формате "reg000", мы собираем количество сеансов регламентных заданий и создали триггеры для тех, которые не должны запускать пользователи в рабочее время.
Объединяем все полученные данные в блоках 1-4:
Результат сохраняем в файл, который в дальнейшем будет парсить сервер Zabbix:
Детально описывать создание каждого элемента данных не будем, просто приложим "Zabbix template" и готовый скрипт PowerShell.
У шаблона 2 макроса с заданными значениями по умолчанию
Вся информация о кластере и его параметрах отнесена в группе элементов данных "Кластер 1С":
Созданы соответствующие триггеры:
В шаблоне создано 3 правила обнаружения для информационных баз, рабочих серверов и рабочих процессов:
Для сопровождения созданы дашборды в Zabbix. Примеры:
Для визуализации состояния КИС создан дашборд на Grafana:
Дашборд выводится на один из экранов обслуживающего подразделения. Так это выглядит у нас:
Наша система мониторинга продолжает развиваться, ровно, как и специалисты, ее развивающие и сопровождающие. В связи с этим в ближайшем будущем мы планируем перевод системы мониторинга с COM+ на RAS/RAC.
В обработке реализован способ получения списка текущих процессов при помощи команды TaskList. Запуск с получением PID реализован следующим образом: получаем таблицу активных процессов, запускаем приложение, получаем таблицу активных процессов и сравниваем ее с полученной ранее (тут используется возможность индексированной таблицы Разность(), при желании можно адаптировать для использования без 1С++), отсутствующая в первой таблице строка и есть наше запущенное приложение.
Закрытие процесса по PID или имени образа процесса реализован при помощи команды TaskKill
При выполнении функции ЗапущенныеЗадачи() без параметров - получим таблицу всех активных процессов.
Специальные предложения
А зачем такое извращение, простите? )
Шелл=Новый COMОбъект("WScript.Shell");
Процесс=Шелл.Exec(СтрокаЗапуска);
PID=Процесс.ProcessID;
Не говоря уже о том, что TaskList не самый удачный способ получения процессов. )
Народ! Если не секрет. Что такое - СоздатьОбъект("ИндексированнаяТаблица");
У меня в 1С77, укр. таких объектов нет. Или я что-то путаю.
Синтаксис, вроде, из 7.7.
Просмотры 17535
Загрузки 178
Рейтинг 1
Создание 01.04.09 11:09
Обновление 02.04.09 00:00
№ Публикации 19509
Конфигурация Конфигурации 1cv7
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо
Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.
В обработке реализован способ получения списка текущих процессов при помощи команды TaskList. Запуск с получением PID реализован следующим образом: получаем таблицу активных процессов, запускаем приложение, получаем таблицу активных процессов и сравниваем ее с полученной ранее (тут используется возможность индексированной таблицы Разность(), при желании можно адаптировать для использования без 1С++), отсутствующая в первой таблице строка и есть наше запущенное приложение.
Закрытие процесса по PID или имени образа процесса реализован при помощи команды TaskKill
При выполнении функции ЗапущенныеЗадачи() без параметров - получим таблицу всех активных процессов.
Специальные предложения
А зачем такое извращение, простите? )
Шелл=Новый COMОбъект("WScript.Shell");
Процесс=Шелл.Exec(СтрокаЗапуска);
PID=Процесс.ProcessID;
Не говоря уже о том, что TaskList не самый удачный способ получения процессов. )
Народ! Если не секрет. Что такое - СоздатьОбъект("ИндексированнаяТаблица");
У меня в 1С77, укр. таких объектов нет. Или я что-то путаю.
Синтаксис, вроде, из 7.7.
Просмотры 17535
Загрузки 178
Рейтинг 1
Создание 01.04.09 11:09
Обновление 02.04.09 00:00
№ Публикации 19509
Конфигурация Конфигурации 1cv7
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо
Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.
Здравствуйте.
Установлена 1с документооборот 8.3. Правок в конфигурацию не вносили. Все бизнес процессы настраиваются через пользовательский интерфейс.
Подскажите пожалуйста, как программно получить список задач, которые есть у документа.
Документ нахожу с помощью запроса:
Но задач нет.
Нашёл просто задачи тут
Но как связать не знаю.
Ню.
Тебе надо найти какой БП был создан, далее список Задач которые он инициировал.
Для примера открой карточку Внетренного документа, там выводится БП и Задачи.
ВЫБРАТЬ
ЗадачаИсполнителя.БизнесПроцесс,
ЗадачаИсполнителя.Ссылка
ИЗ
Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
Константин, здравствуйте!
Нашёл комплексный процесс, который привязан к документу.
Но комплексного процесса нет в табличной части Задача (запрос, который Вы мне отправили)
Есть две идеи.
1. Можно как-то через форму посмотреть запрос, который достает данные?
2. Можно посмотреть какие объекты взаимодействуют со справочником "внутренние документы"?
Не совсем.
Тебе надо понять какой БП, запускается, для данного вида внутреннего документа.
Загляни в \НСИ\Виды документов\ тут находишь "Шаблоны процессов". Если там что-то есть значит будут задачи. Если есть то реквизиту "Шаблон процессов" можно понять какой вид БП запускается.
Это для понимания что искать.
После идешь в Задачи
у задачи есть реквизит "БизнесПроцесс".
А вот БП, нужный "Внутренний документ" ищешь в Табличной части "Предмет".
Итого получится связка Задача - БП\Предмет\ - Внутренний документ
Константин, здравствуйте!
Зашёл в \НСИ\Виды документов\, нашёл нужный вид документа
Зашёл в его "Шаблоны процессов", но там пусто
Есть шаблон процессов для данного вида документа. Я так понял, документ отправляется по шаблону согласования, а не по бизнес процессу.
Читайте также: