Configure Distributed Replay

Aplica-se a: SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x)

Importante

O SQL Server Distributed Replay não está disponível no SQL Server 2022 (16.x).

Os detalhes de configuração do Microsoft SQL Server Distributed Replay são especificados em arquivos XML no controlador do Distributed Replay, nos clientes e onde a ferramenta de administração está instalada. Esses arquivos incluem o seguinte:

Arquivo de configuração do controlador: DReplayController.config

Quando o serviço do controlador SQL Server Distributed Replay é iniciado, ele carrega o nível de log do arquivo de configuração do controlador, DReplayController.config. Esse arquivo está localizado na pasta em que você instalou o serviço de controlador de reprodução distribuída:

<caminho de instalação do controlador>\DReplayController.config

O nível de log especificado pelo arquivo de configuração do controlador inclui o seguinte:

Configuração Elemento XML Descrição Valores Permitidos Obrigatório
Nível de log <LoggingLevel> Especifica o nível de log do serviço de controlador. INFORMATION | WARNING | CRITICAL Não. Por padrão, o valor é CRITICAL.

Exemplo

Este exemplo mostra um arquivo de configuração do controlador que foi modificado para suprimir as entradas de log INFORMATION e WARNING .

<?xml version='1.0'?> 
<Options> 
<LoggingLevel>CRITICAL</LoggingLevel> 
</Options> 

Arquivo de configuração de cliente: DReplayClient.config

Quando o serviço cliente SQL Server Distributed Replay é iniciado, ele carrega as definições de configuração do arquivo de configuração de cliente, DReplayClient.config. Esse arquivo está localizado em cada cliente, na pasta em que você instalou o serviço de cliente de reprodução distribuída:

<caminho de instalação do cliente>\DReplayClient.config

As configurações especificadas pelo arquivo de configuração de cliente incluem o seguinte:

Configuração Elemento XML Descrição Valores Permitidos Obrigatório
Controller <Controller> Especifica o nome do computador do controlador. O cliente tentará se registrar com o ambiente de Distributed Replay entrando em contato o controlador. Você pode usar "localhost" ou "." para fazer referência ao computador local. Não. Por padrão, o cliente tenta se registrar com a instância de controlador que está sendo executada localmente ("."), se existir.
Diretório de trabalho do cliente <WorkingDirectory> É o caminho local no cliente onde os arquivos de expedição são salvos.

Os arquivos nesse diretório são substituídos na próxima reprodução.
Um nome de diretório completo, iniciando com a letra da unidade. Não. Se nenhum valor for especificado, os arquivos de expedição serão salvos no mesmo local que o arquivo de configuração de cliente padrão. Se for especificado um valor e essa pasta não existir no cliente, o serviço do cliente não será iniciado.
Diretório de resultado do cliente <ResultDirectory> É o caminho local no cliente onde o arquivo de rastreamento de resultado da atividade de reprodução (do cliente) é salvo.

Os arquivos nesse diretório são substituídos na próxima reprodução.
Um nome de diretório completo, iniciando com a letra da unidade. Não. Se nenhum valor for especificado, o arquivo de rastreamento de resultado será salvo no mesmo local que o arquivo de configuração de cliente padrão. Se for especificado um valor e essa pasta não existir no cliente, o serviço do cliente não será iniciado.
Nível de log <LoggingLevel> É o nível de log do serviço do cliente. INFORMATION | WARNING | CRITICAL Não. Por padrão, o valor é CRITICAL.

Exemplo

Este exemplo mostra um arquivo de configuração de cliente que foi modificado para especificar que o serviço de controlador está em execução em um computador diferente, um computador denominado Controller1. Os elementos WorkingDirectory e ResultDirectory foram configurados para usar as pastas c:\ClientWorkingDir e c:\ResultTraceDir, respectivamente. O nível de log foi alterado do valor padrão para suprimir as entradas de log INFORMATION e WARNING .

<?xml version='1.0'?> 
<Options> 
    <Controller>Controller1</Controller> 
    <WorkingDirectory>c:\ClientWorkingDir</WorkingDirectory> 
    <ResultDirectory>c:\ResultTraceDir</ResultDirectory> 
    <LoggingLevel>CRITICAL</LoggingLevel> 
</Options> 

Arquivo de configuração de pré-processamento: DReplay.exe.preprocess.config

Quando você usar a ferramenta de administração para iniciar o estágio de pré-processamento, ela carregará as configurações de pré-processamento do arquivo de configuração de pré-processamento, DReplay.exe.preprocess.config.

Use o arquivo de configuração padrão ou use o parâmetro -c da ferramenta de administração para especificar o local de um arquivo de configuração de pré-processamento modificado. Para obter mais informações de como usar a opção de pré-processamento da ferramenta de administração, confira Opção de Pré-processamento (Ferramenta de Administração do Distributed Replay).

O arquivo de configuração de pré-processamento padrão está localizado na pasta em que você instalou a ferramenta de administração:

<caminho de instalação da ferramenta de administração>\DReplayAdmin\DReplay.exe.preprocess.config

As definições de configuração de pré-processamento são especificadas em elementos XML que são filhos do elemento <PreprocessModifiers> no arquivo de configuração de pré-processamento. Essas configurações incluem o seguinte:

Configuração Elemento XML Descrição Valores Permitidos Obrigatório
Incluir atividades de sessão de sistema <IncSystemSession> Indica se as atividades de sessão de sistema durante a captura serão incluídas durante a reprodução. Yes | No Não. Por padrão, o valor é No.
Tempo ocioso máximo <MaxIdleTime> Arredonda o tempo ocioso para um número absoluto (em segundos). Um inteiro que é >= -1.

-1 indica que não houve alteração do valor original no arquivo de rastreamento original.

0 indica que há alguma atividade ocorrendo em um determinado momento.
Não. Por padrão, o valor é -1.

Exemplo

O arquivo de configuração de pré-processamento padrão:

<?xml version='1.0'?> 
<Options> 
    <PreprocessModifiers> 
        <IncSystemSession>No</IncSystemSession> 
        <MaxIdleTime>-1</MaxIdleTime> 
    </PreprocessModifiers> 
</Options> 

Arquivo de configuração de reprodução: DReplay.exe.replay.config

Quando você usar a ferramenta de administração para iniciar o estágio de reprodução do evento, ela carregará as configurações de reprodução do arquivo de configuração de reprodução, DReplay.exe.replay.config.

Use o arquivo de configuração padrão ou use o parâmetro -c da ferramenta de administração para especificar o local de um arquivo de configuração de reprodução modificado. Para obter mais informações de como usar a opção de reprodução da ferramenta de administração, confira Opção de Reprodução (Ferramenta de Administração do Distributed Replay).

O arquivo de configuração de reprodução padrão está localizado na pasta em que você instalou a ferramenta de administração:

<caminho de instalação da ferramenta de administração>\DReplayAdmin\DReplay.exe.replay.config

As definições de configuração de reprodução são especificadas em elementos XML que são filhos dos elementos <ReplayOptions> e <OutputOptions> do arquivo de configuração de reprodução.

Elemento <ReplayOptions>

As configurações especificadas pelo arquivo de configuração de reprodução no elemento <ReplayOptions> incluem o seguinte:

Configuração Elemento XML Descrição Valores Permitidos Obrigatório
Instância de destino do SQL Server (o servidor de teste) <Server> Especifica o nome do servidor e a instância do SQL Server para conexão. server_name[\instance_name]

Você não pode usar "localhost" ou "." para representar o host local.
Não, se o nome do servidor já tiver sido especificado usando o parâmetro -starget server com a opção replay da ferramenta de administração.
Modo de sequenciamento <SequencingMode> Especifica o modo usado para o agendamento de eventos. synchronization | stress Não. Por padrão, o valor é stress.
Granularidade de escala de tensão <StressScaleGranularity> Especifica se deveriam ser dimensionadas todas as conexões no Identificador de Perfil de Serviço (SPID) junto (SPID) ou independentemente (Conexão) sob modo de tensão. SPID | Connection Sim. Por padrão, o valor é SPID.
Escala de tempo de conexão <ConnectTimeScale> É usada para dimensionar o tempo de conexão em modo de estresse. Um inteiro entre 1 e 100. Não. Por padrão, o valor é 100.
Escala de tempo de resposta <ThinkTimeScale> É usada para dimensionar o tempo de resposta em modo de estresse. Um inteiro entre 0 e 100. Não. Por padrão, o valor é 100.
Usar o pool de conexões <UseConnectionPooling> Especifica se conexão agrupando será habilitado em cada cliente de Reprodução distribuída. Sim | Não Sim. Por padrão, o valor é Yes.
Intervalo do monitor de integridade <HealthmonInterval> Indica a frequência com que o monitor de integridade deve ser executado (em segundos).

Este valor é usado somente no modo de sincronização.
Inteiro >= 1

(-1 para desabilitar)
Não. Por padrão, o valor é 60.
Tempo limite de consulta <QueryTimeout> Especifica o valor do tempo limite de consulta, em segundos. Esse valor estará em vigor somente até que a primeira linha tenha sido retornada. Inteiro >= 1

(-1 para desabilitar)
Não. Por padrão, o valor é 3600.
Threads por cliente <ThreadsPerClient> Especifica o número de threads de reprodução que devem ser usados para cada cliente de reprodução. Um inteiro entre 1 e 512. Não. Se não especificado, o Distributed Replay usará o valor 255.

Elemento <OutputOptions>

As configurações especificadas pelo arquivo de configuração de reprodução no elemento <OutputOptions> incluem o seguinte:

Configuração Elemento XML Descrição Valores Permitidos Obrigatório
Gravar contagem de linhas <RecordRowCount> Indica se a contagem de linhas de cada conjunto de resultados deve ser gravada. Yes | No Não. Por padrão, o valor é Yes.
Gravar conjunto de resultados <RecordResultSet> Indica se o conteúdo de todos os conjuntos de resultados deve ser gravado. Yes | No Não. Por padrão, o valor é No.

Exemplo

O arquivo de configuração de reprodução padrão:

<?xml version='1.0'?> 
<Options> 
    <ReplayOptions> 
        <Server></Server> 
        <SequencingMode>stress</SequencingMode> 
        <ConnectTimeScale></ConnectTimeScale> 
        <ThinkTimeScale></ThinkTimeScale> 
        <HealthmonInterval>60</HealthmonInterval> 
        <QueryTimeout>3600</QueryTimeout> 
        <ThreadsPerClient></ThreadsPerClient> 
    </ReplayOptions> 
    <OutputOptions> 
        <ResultTrace> 
            <RecordRowCount>Yes</RecordRowCount> 
            <RecordResultSet>No</RecordResultSet> 
        </ResultTrace> 
    </OutputOptions> 
</Options> 

Possível problema na execução com o modo de sequenciamento de sincronização

Você pode encontrar um sintoma no qual a funcionalidade de reprodução parece "travar" ou reproduzir os eventos muito lentamente. Esse fenômeno poderá ocorrer se o rastreamento que está sendo reproduzido depender de dados e/ou eventos não existentes no banco de dados de destino restaurado.

Um exemplo é uma carga de trabalho capturada que usa WAITFOR, como na instrução WAITFOR RECEIVE do Service Broker. O uso do modo de sequenciamento de sincronização faz com que os lotes sejam reproduzidos em série. Se um INSERT ocorrer em relação ao banco de dados de origem após o backup do banco de dados, mas antes que o rastreamento de captura de reprodução seja iniciado, o WAITFOR RECEIVE emitido durante a reprodução poderá ter que esperar a duração inteira do WAITFOR. Eventos configurados para serem reproduzidos após a paralisação do WAITFOR RECEIVE. Isso pode fazer com que o contador de monitor de desempenho de Solicitações em Lote por segundo do destino do banco de dados de reprodução caia para zero até que o WAITFOR seja concluído.

Para usar o modo de sincronização e evitar esse comportamento, faça o seguinte:

  1. Desative os bancos de dados que você usará como destinos de reprodução.

  2. Permita que todas as atividades pendentes sejam concluídas.

  3. Faça backup dos bancos de dados e permita a conclusão dos backups.

  4. Inicie a captura de rastreamento de reprodução distribuída e continue a carga de trabalho normal.

Confira também