Бөлісу құралы:


Мониторинг скриптов Python и R с использованием расширенных событий в Службах машинного обучения SQL Server

Применимо к: SQL Server 2016 (13.x) и более поздним версиям Azure SQL Managed Instance

Сведения о том, как использовать расширенные события для мониторинга операций, относящихся к службам машинного обучения SQL Server, панели запуска SQL Server и внешним скриптам заданий Python или R, а также устранять связанные с такими операциями неполадки.

Расширенные события для служб машинного обучения SQL Server

Чтобы просмотреть список событий, связанных со службами машинного обучения SQL Server, выполните следующий запрос в SQL Server Management Studio (SSMS),расширение MSSQL для Visual Studio Code, sqlcmd или любимое средство запросов T-SQL.

SELECT o.name AS event_name, o.description
FROM sys.dm_xe_objects o
JOIN sys.dm_xe_packages p
ON o.package_guid = p.guid
WHERE o.object_type = 'event'
AND p.name = 'SQLSatellite';

Дополнительные сведения об использовании расширенных событий см. в статье Средства расширенных событий.

Дополнительные события, относящиеся к службам машинного обучения

Дополнительные расширенные события доступны для компонентов, связанных со службами SQL Server Машинное обучение Services, такими как панель запуска SQL Server и BXLServer, а также вспомогательный процесс, который запускает среду выполнения Python или R. Такие дополнительные расширенные события вызываются из внешних процессов и, соответственно, должны записываться внешней служебной программой.

Дополнительные сведения см. в разделе Сбор событий из внешних процессов.

Таблица расширенных событий

Мероприятие Описание Основание
connection_accept Происходит при принятии нового подключения. Это событие регистрирует все попытки подключения.
failed_launching Сбой при запуске. Указывает на ошибку.
satellite_abort_connection Прерывание записи подключения.
satellite_abort_received Возникает при получении сообщения о прерывании по вспомогательному соединению.
satellite_abort_sent Возникает при отправке сообщения о прерывании по вспомогательному соединению.
satellite_authentication_completion Возникает при завершении проверки подлинности для подключения по протоколу TCP или с помощью канала Namedpipe.
satellite_authorization_completion Возникает при завершении авторизации для подключения по протоколу TCP или с помощью канала Namedpipe.
satellite_cleanup Возникает, если вспомогательное подключение вызывает очистку. Активируется только внешним процессом. См. инструкции по сбору событий из внешних процессов.
satellite_data_chunk_sent Возникает при завершении отправки одного блока данных по вспомогательному соединению. При отправке фрагмента данных событие сообщает число строк, столбцов, использованных пакетов SNI и затраченное время в миллисекундах. Эти сведения помогут вам понять, сколько времени потрачено при передаче различных типов данных и сколько пакетов использовано.
satellite_data_receive_completion Возникает при получении необходимых данных по запросу через вспомогательное соединение. Активируется только внешним процессом. См. инструкции по сбору событий из внешних процессов.
satellite_data_send_completion Возникает при отправке необходимых данных для сеанса через вспомогательное соединение.
satellite_data_send_start Вызывается при запуске передачи данных (непосредственно перед отправкой первого блока данных).
satellite_error Используется для трассировки ошибок вспомогательного соединения SQL.
satellite_invalid_sized_message Недопустимый размер сообщения.
satellite_message_coalesced Используется для трассировки сообщений, объединяющихся на сетевом уровне.
satellite_message_ring_buffer_record Запись в кольцевом буфере сообщений.
satellite_message_summary Сводные сведения об обмене сообщениями.
satellite_message_version_mismatch Поля версии сообщения не совпадают.
satellite_messaging Используется для трассировки событий при обмене сообщениями (привязка, отмена привязки и т. д.).
satellite_partial_message Используется для трассировки неполных сообщений на сетевом уровне.
satellite_schema_received Возникает, если SQL получает сообщение схемы и выполняет его чтение.
satellite_schema_sent Возникает при отправке сообщения схемы через вспомогательное соединение. Активируется только внешним процессом. См. инструкции по сбору событий из внешних процессов.
satellite_service_start_posted Возникает при публикации сообщения о запуске службы на панели запуска. Это событие содержит идентификатор для нового сеанса и указывает панели запуска на запуск внешнего процесса.
satellite_unexpected_message_received Возникает при получении непредвиденного сообщения. Указывает на ошибку.
stack_trace Возникает при запросе дампа памяти процесса. Указывает на ошибку.
trace_event Используется для отслеживания. Эти события могут содержать сообщения о трассировке SQL Server, панели запуска и внешних процессов. К ним относится вывод в stdout и stderr из кода R.
launchpad_launch_start Возникает при запуске вспомогательного соединения на панели запуска. Активируется только на панели запуска. См. инструкции по сбору событий из launchpad.exe.
launchpad_resume_sent Возникает при запуске вспомогательного соединения и отправке сообщения о возобновлении на SQL Server с панели запуска. Активируется только на панели запуска. См. инструкции по сбору событий из launchpad.exe.
satellite_data_chunk_sent Возникает при завершении отправки одного блока данных по вспомогательному соединению. Содержит сведения о количестве столбцов, строк, пакетов и продолжительности отправки блока данных.
satellite_sessionId_mismatch Непредвиденный идентификатор сеанса сообщения.

Сбор событий из внешних процессов

Службы машинного обучения SQL Server запускают некоторые службы, которые выполняются вне процесса SQL Server. Чтобы записывать события, связанные с этими внешними процессами, необходимо создать файл конфигурации трассировки событий и поместить его в тот же каталог, в котором находится исполняемый файл для процесса.

Внимание

Начиная с версии SQL Server 2019 механизм изоляции изменился. Поэтому необходимо предоставить соответствующие разрешения для каталога, в котором хранится файл конфигурации трассировки событий. Дополнительные сведения о настройке этих разрешений см. в разделе "Разрешения файлов" в SQL Server 2019 в Windows: изменения изоляции для служб Машинное обучение.

  • Панель запуска SQL Server

    Чтобы фиксировать события, связанные с панелью запуска, поместите файл конфигурации (XML-файл) в каталог Binn экземпляра SQL Server. При установке по умолчанию это следующий каталог:

    C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\MSSQL\Binn.

  • BXLServer — это вспомогательный процесс, который поддерживает возможность расширения SQL с помощью внешних языков скриптов, таких как R и Python. Для каждого экземпляра внешнего языка запускается отдельный экземпляр BxlServer.

    Чтобы записывать события, связанные с BXLServer, поместите файл конфигурации (XML-файл) в установочный каталог R или Python. При установке по умолчанию это следующий каталог:

    R:C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64.

    Python:C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\revoscalepy\rxLibs.

Имена файла конфигурации и исполняемого файла должны совпадать и записываться в формате [имя].xevents.xml. Другими словами, имя файла должно выглядеть следующим образом:

  • Launchpad.xevents.xml
  • bxlserver.xevents.xml

Файл конфигурации имеет следующий формат:

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
<event_session name="[session name]" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="you">Xevent for launchpad or bxl server.</description>  
    <event package="SQLSatellite" name="[XEvent Name 1]" />  
    <event package="SQLSatellite" name="[XEvent Name 2]" />  
    <target package="package0" name="event_file">  
      <parameter name="filename" value="[SessionName].xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Чтобы настроить трассировку, измените заполнитель session name, заполнитель для имени файла ([SessionName].xel) и имена событий, которые требуется записывать (например, [XEvent Name 1], [XEvent Name 1]).
  • Может появиться любое количество тегов пакетов событий. Все они будут собираться при условии, что атрибут имени правильный.

Пример. Фиксация событий панели запуска

В следующем примере представлено определение трассировки событий для службы панели запуска:

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
<event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="hay">Xevent for sql tdd runner.</description>  
    <event package="SQLSatellite" name="launchpad_launch_start" />  
    <event package="SQLSatellite" name="launchpad_resume_sent" />  
    <target package="package0" name="event_file">  
      <parameter name="filename" value="launchpad_session.xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Поместите XML-файл в каталог Binn экземпляра SQL Server.
  • Этот файл должен иметь имя Launchpad.xevents.xml.

Пример. Фиксация событий BXLServer

В следующем примере представлено определение трассировки событий для исполняемого файла BXLServer.

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
 <event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="hay">Xevent for sql tdd runner.</description>  
    <event package="SQLSatellite" name="satellite_abort_received" />  
    <event package="SQLSatellite" name="satellite_authentication_completion" />  
    <event package="SQLSatellite" name="satellite_cleanup" />  
    <event package="SQLSatellite" name="satellite_data_receive_completion" />  
    <event package="SQLSatellite" name="satellite_data_send_completion" />  
    <event package="SQLSatellite" name="satellite_data_send_start" />  
    <event package="SQLSatellite" name="satellite_schema_sent" />   
    <event package="SQLSatellite" name="satellite_unexpected_message_received" />    
    <event package="SQLSatellite" name="satellite_data_chunk_sent" />   
    <target package="package0" name="event_file">  
      <parameter name="filename" value="satellite_session.xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Поместите XML-файл в тот же каталог, в котором находится исполняемый файл BXLServer.
  • Этот файл должен иметь имя bxlserver.xevents.xml.

Следующие шаги