沙盒策略

某些插件会在沙盒中运行,沙盒中的可用资源受到限制和控制,以提高安全性并治理资源。

沙盒在群集的节点上运行。 它们的某些限制将在沙盒策略中定义,其中每种沙盒类型都可以有其自己的策略。

沙盒策略在群集级别进行管理,并影响群集中的所有节点。

权限

你必须具有 AllDatabasesAdmin 权限才能运行此命令。

策略对象

沙盒策略具有以下属性。

  • SandboxKind:定义沙盒的类型(如 PythonExecutionRExecution)。
  • IsEnabled:定义此类型的沙箱是否可以在群集的节点上运行。
    • 默认值为 false。
  • InitializeOnStartup:定义在启动时是初始化此类型的沙盒,还是等到首次使用时再初始化。
    • 默认值为 false。 若要确保性能一致并避免在服务重启后运行查询的任何延迟,请将此属性设置为 true。
  • TargetCountPerNode:定义允许在群集节点上运行的此类型的沙盒数。
    • 值可以是每个节点的处理器数的一到两倍。
    • 默认值为 16。
  • MaxCpuRatePerSandbox:将最大 CPU 使用率定义为单个沙盒可以使用的所有可用核心的百分比。
    • 值可以介于 1 到 100 之间。
    • 默认值为 50。
  • MaxMemoryMbPerSandbox:定义单个沙盒可以使用的最大内存量(以 MB 为单位)。
    • 对 Hyper-V 技术沙盒而言,值可以介于 200 到 32768 (32 GB) 之间。 默认值为 1024 (1 GB)。 一个节点 (TargetCountPerNode * MaxMemoryMbPerSandbox) 上所有沙盒的最大内存为 32768 (32 GB)。
    • 对于旧的沙盒,值可以介于 200 到 65536 (64 GB) 之间。 默认值为 20480 (20 GB)。

如果未显式为某种沙盒类型定义策略,则会应用具有默认值且 IsEnabled 设置为 true 的隐式策略。

示例

以下策略为 PythonExecutionRExecution 沙盒设置不同的限制:

[
  {
    "SandboxKind": "PythonExecution",
    "IsEnabled": true,
    "InitializeOnStartup": false,
    "TargetCountPerNode": 4,
    "MaxCpuRatePerSandbox": 55,
    "MaxMemoryMbPerSandbox": 8192
  },
  {
    "SandboxKind": "RExecution",
    "IsEnabled": true,
    "InitializeOnStartup": false,
    "TargetCountPerNode": 2,
    "MaxCpuRatePerSandbox": 50,
    "MaxMemoryMbPerSandbox": 10240
  }
]

注意

  • 在策略更改生效之前,可能会有最多五分钟的延迟,因为群集需要回收在策略更改之前已经预分配过的沙盒。