配置分布式重播

适用于: SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x)

重要

SQL Server Distributed Replay 不适用于 SQL Server 2022 (16.x) 及更高版本。

Microsoft SQL Server Distributed Replay 配置详细信息在 Distributed Replay 控制器、客户端以及安装有管理工具的位置的 XML 文件中指定。 这些文件包括下面的文件:

控制器配置文件:DReplayController.config

SQL Server Distributed Replay 控制器服务启动时,它会从控制器配置文件加载日志记录级别 DReplayController.config。 此文件位于安装有分布式重播控制器服务的文件夹内:

<控制器安装路径>\DReplayController.config

控制器配置文件指定的日志记录级别包括:

设置 XML 元素 说明 允许的值 必选
日志记录级别 <LoggingLevel> 为控制器服务指定日志记录级别。 INFORMATION | WARNING | CRITICAL 不是。 默认情况下,该值为 CRITICAL

示例

本示例显示一个控制器配置文件,该文件已经过修改以便消除 INFORMATIONWARNING 日志条目。

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

客户端配置文件:DReplayClient.config

当 SQL Server 分布式重播客户端服务启动时,它将从客户端配置文件 DReplayClient.config加载配置设置。 此文件位于每台客户端上安装有分布式重播客户端服务的文件夹内:

<客户端安装路径>\DReplayClient.config

客户端配置文件指定的设置包括:

设置 XML 元素 说明 允许的值 必选
控制器 <Controller> 指定控制器的计算机名称。 客户端将尝试通过联系控制器在分布式重播环境中注册。 可以用“localhost”或“.”指代本地计算机。 不是。 默认情况下,客户端会尝试向在本地运行的控制器实例 (“.”)(如果存在)注册。
客户端工作目录 <WorkingDirectory> 客户端上用于保存调度文件的本地路径。

此目录中的文件在下一次重播时会被覆盖。
以驱动器号开头的完整目录名称。 不是。 如果未指定任何值,则调度文件将与默认客户端配置文件保存在同一位置。 如果指定一个值,而该文件夹在客户端上不存在,则客户端服务不会启动。
客户端结果目录 <ResultDirectory> 客户端上用于保存重播活动(针对客户端)的结果跟踪文件的本地路径。

此目录中的文件在下一次重播时会被覆盖。
以驱动器号开头的完整目录名称。 不是。 如果未指定任何值,则结果跟踪文件将与默认客户端配置文件保存在同一位置。 如果指定一个值,而该文件夹在客户端上不存在,则客户端服务不会启动。
日志记录级别 <LoggingLevel> 客户端服务的日志记录级别。 INFORMATION | WARNING | CRITICAL 不是。 默认情况下,该值为 CRITICAL

示例

此示例显示一个客户端配置文件,该文件已经过修改,以指定控制器服务正在名为 Controller1的另一台计算机上运行。 WorkingDirectoryResultDirectory 元素配置为分别使用文件夹 c:\ClientWorkingDirc:\ResultTraceDir。 日志记录级别已从默认值改为消除 INFORMATIONWARNING 日志条目。

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

预处理配置文件:DReplay.exe.preprocess.config

当您使用管理工具启动预处理阶段时,管理工具将从预处理配置文件 DReplay.exe.preprocess.config 加载预处理设置。

使用默认配置文件或使用管理工具的 -c 参数来指定修改过的预处理配置文件的位置。 有关使用管理工具的预处理选项的详细信息,请参阅预处理选项(分布式重播管理工具)

默认情况下,预处理配置文件位于安装有管理工具的文件夹中:

<管理工具安装路径>\DReplayAdmin\DReplay.exe.preprocess.config

预处理配置是在预处理配置文件中 <PreprocessModifiers> 元素的子级 XML 元素中指定的。 这些设置包括:

设置 XML 元素 说明 允许的值 必选
包括系统会话活动 <IncSystemSession> 指示重播期间是否包括捕获过程中的系统会话活动。 Yes | No 不是。 默认情况下,该值为 No
最长空闲时间 <MaxIdleTime> 将空闲时间的上限设为某个绝对值(以秒为单位)。 >= -1 的整数。

-1 表示原始跟踪文件中的原始值没有变化。

0 表示在任意给定时间点有某个活动正在进行。
不是。 默认情况下,该值为 -1

示例

默认预处理配置文件:

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

重播配置文件:DReplay.exe.replay.config

当您使用管理工具启动事件重播阶段时,管理工具将从重播配置文件 DReplay.exe.replay.config 加载重播设置。

使用默认配置文件或使用管理工具的 -c 参数来指定修改过的重播配置文件的位置。 有关使用管理工具的重播选项的详细信息,请参阅重播选项(分布式重播管理工具)

默认情况下,重播配置文件位于安装有管理工具的文件夹中:

<管理工具安装路径>\DReplayAdmin\DReplay.exe.replay.config

重播配置的设置指定在重播配置文件的 <ReplayOptions><OutputOptions> 元素的子 XML 元素中。

ReplayOptions 元素<>

重播配置文件在 <ReplayOptions> 元素中指定的设置包括:

设置 XML 元素 说明 允许的值 必选
SQL Server 目标实例(测试服务器) <Server> 指定要连接的服务器名和 SQL Server 实例名。 server_name[instance_name]

不能使用“localhost”或“.”来表示本地主机。
否,如果已通过使用管理工具的 -starget server 参数和“重播” 选项指定服务器名称。
顺序模式 <SequencingMode> 指定用于事件计划的模式。 synchronization | stress 不是。 默认情况下,该值为 stress
压力调整粒度 <StressScaleGranularity> 指定会话 ID (SPID) 上的所有连接在压力模式下是应该一起调整 (SPID) 还是单独调整 (Connection)。 SPID | 连接 是的。 默认情况下,该值为 SPID
连接时间刻度 <ConnectTimeScale> 用于调整压力模式下的连接时间。 介于 1100之间的整数。 不是。 默认情况下,该值为 100
思考时间刻度 <ThinkTimeScale> 用于缩放压力模式下的思考时间。 介于 0100之间的整数。 不是。 默认情况下,该值为 100
使用连接池 <UseConnectionPooling> 指定是否将在每个分布式重播客户端上启用连接池功能。 是 |不 是的。 默认情况下,该值为 Yes
健康监测时间间隔 <HealthmonInterval> 指示运行 Health Monitor 的频率(以秒为单位)。

只在同步模式下才使用该值。
整数 >= 1

-1 为禁用)
不是。 默认情况下,该值为 60
查询超时 <QueryTimeout> 指定查询超时值(以秒为单位)。 返回第一行后该值才会生效。 整数 >= 1

-1 为禁用)
不是。 默认情况下,该值为 3600
每个客户端的线程数 <ThreadsPerClient> 指定要用于每个重播客户端的重播线程数。 介于 1512之间的整数。 不是。 如果未指定,分布式重播将使用值 255

<OutputOptions> 元素

重播配置文件在 <OutputOptions> 元素中指定的设置包括:

设置 XML 元素 说明 允许的值 必选
记录行计数 <RecordRowCount> 指示是否应记录每个结果集的行计数。 Yes | No 不是。 默认情况下,该值为 Yes
记录结果集 <RecordResultSet> 指示是否应记录所有结果集的内容。 Yes | No 不是。 默认情况下,该值为 No

示例

默认重播配置文件:

<?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> 

在同步顺序模式下运行时可能出现的问题

你可能会遇到重播功能看似“停止”或重播事件缓慢的症状。 如果正在重播的跟踪依赖于还原的目标数据库中不存在的数据和/或事件,则可能会出现这种现象。

例如,使用 WAITFOR 的捕获工作负载(如 Service Broker 的 WAITFOR RECEIVE 语句中)。 使用同步顺序模式时,批处理按顺序重播。 如果在数据库备份后,但在启动重播捕获跟踪之前对源数据库进行插入,则在重播过程中发出的 WAITFOR RECEIVE 可能需要等待 WAITFOR 的整个持续时间。 在 WAITFOR RECEIVE 之后重播的事件集将停止。 这可能导致在 WAITFOR 完成之前,重播数据库目标的“批处理请求数/秒”性能监视器计数器降为零。

如果需要使用同步模式并希望避免此行为,必须执行以下操作:

  1. 静止将用作重播目标的数据库。

  2. 允许所有挂起的活动完成。

  3. 备份数据库并允许备份完成。

  4. 启动 Distributed Replay 跟踪捕获并恢复正常工作负载。

另请参阅