> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RUM 数据采样

> 通过独立采样率和有界客户端队列控制 Browser RUM 会话与回放数据量。

Browser RUM SDK 会在创建会话时作出采样决定，并在当前浏览器标签页会话中保持不变。

## 配置采样率

```ts theme={null}
const rum = initRum({
  applicationId: 'checkout-web',
  clientToken: 'msrum_your_client_token',
  site: 'https://molesignal.example.com',
  sessionSampleRate: 25,
  sessionReplaySampleRate: 20,
});
```

两个值都是从 `0` 到 `100` 的百分比：

* `sessionSampleRate` 决定 SDK 是否上报该会话与关联 RUM 事件，默认值为 `100`；
* `sessionReplaySampleRate` 只作用于已采样会话，默认值为 `0`。

实际回放采样率是两个采样结果的乘积。在上面的示例中，大约 25% 的会话会上报 RUM 数据，
大约 5% 的全部会话会记录回放（`25% × 20%`）。

<Note>
  `startSessionReplayRecording()` 可以为当前已采样会话启用回放，但不能把被 `sessionSampleRate`
  排除的会话重新纳入采样。
</Note>

## 选择初始值

| 流量类型     |     会话采样率 | 已采样会话内的回放采样率 |
| -------- | --------: | -----------: |
| 开发或受控 QA |     `100` |        `100` |
| 低流量生产环境  |     `100` |    `10`–`25` |
| 高流量生产环境  | `10`–`50` |     `1`–`10` |

这些值只适合作为起点，并不是通用默认值。发布前请估算事件量、对象存储、保留时间，以及每种浏览器和版本所需的会话数量。

## 会话边界

SDK 会把采样决定存入 `sessionStorage`。满足任一条件时会创建新会话：

* `sessionInactivityTimeout`：默认 30 分钟；
* `maxSessionDuration`：默认 4 小时。

两个值都使用毫秒，允许范围为 1 分钟到 24 小时。

```ts theme={null}
sessionInactivityTimeout: 15 * 60_000,
maxSessionDuration: 2 * 60 * 60_000,
```

修改采样配置不会改变当前会话已经保存的决定。测试新配置时，请打开新标签页，或清除
`molesignal_rum_session_<applicationId>` 对应的 `sessionStorage` 数据。

## 限制客户端数据量

使用传输配置让内存占用和请求大小保持可预测：

```ts theme={null}
flushInterval: 5_000,
batchSize: 50,
replayFlushInterval: 10_000,
replayBatchSize: 100,
maxQueueSize: 1_000,
```

每次调整后都应监控写入速率、回放存储、浏览器开销和排障覆盖率。请按应用和版本逐步发布采样配置。

<CardGroup cols={2}>
  <Card title="Browser RUM SDK" icon="code" href="/zh-Hans/rum/browser-sdk">
    查看全部初始化配置。
  </Card>

  <Card title="会话回放" icon="video" href="/zh-Hans/rum/session-replay">
    配置回放采集和影响存储量的选项。
  </Card>
</CardGroup>
