沙盒

Kusto 可以为必须在安全隔离环境中运行的特定流运行沙盒。 这些流的示例包括用户定义的使用 Python 插件R 插件运行的脚本。

沙盒在本地运行(这意味着在数据附近完成处理),远程调用没有额外延迟。

先决条件和限制

运行时

  • 沙盒化的查询运算符可以使用一个或多个沙盒来完成其执行。
    • 沙盒仅用于单个查询,并在查询完成后释放。
    • 当节点重启时(例如,在服务升级过程中重启),将释放该节点上所有正在运行的沙盒。
  • 每个节点都维护预定义数量的沙盒,这些沙盒已就绪,可用于运行传入的请求。
    • 使用某个沙盒后,将自动提供一个新的沙盒来替代它。
  • 如果没有预先分配的沙盒可用来为某个查询运算符提供服务,则会限制该查询运算符,直到有新的沙盒可用。 有关详细信息,请参阅错误。 对于每个沙盒,新的沙盒分配最多可能需要 10-15 秒,具体取决于 SKU 和数据节点上的可用资源。

沙盒参数

对于每种沙盒,可以使用群集级别的沙盒策略来控制某些参数。

  • 每个节点的沙盒数: 每个节点的沙盒数是有限的。
    • 如果没有可用的沙盒,则会对发出的请求进行限制。
  • 启动时初始化:如果设置为 false(默认值),当查询首次需要沙盒来完成其执行时,沙盒会在节点上以延迟方式初始化。 否则,如果设置为 true,沙盒将在服务启动的过程中进行初始化。
    • 这意味着,在节点上使用沙盒的插件的第一次执行会经历一个短的预热期。
  • CPU: 沙盒的主机处理器可供沙盒消耗的最大 CPU 速率是有限的(默认值为 50%)。
    • 达到此限制时,将限制沙盒对 CPU 的使用,但执行将继续。
  • 内存:沙盒的主机 RAM 可供沙盒消耗的最大 RAM 量是有限的。
    • Hyper-V 技术的默认内存为 1 GB,旧沙盒为 20 GB。
    • 达到该限制将导致沙盒终止,并出现查询执行错误。

沙盒限制

  • 网络: 沙盒不能与虚拟机 (VM) 上的或其外部的任何资源交互。
    • 沙盒不能与另一个沙盒交互。

注意

与沙盒一起使用的资源不仅取决于作为请求的一部分进行处理的数据的大小,还取决于沙盒中运行的逻辑以及它所使用的库的实现。 例如,对于 pythonr 插件,后者是指用户提供的脚本以及脚本在运行时使用的 Python 或 R 库。

错误

ErrorCode 状态 Message 可能的原因
E_SB_QUERY_THROTTLED_ERROR TooManyRequests (429) 由于限制,沙盒查询被中止。 在进行某些回退后重试可能会成功 目标节点上没有可用的沙盒。 新沙盒应在几秒钟内变得可用
E_SB_QUERY_THROTTLED_ERROR TooManyRequests (429) “{kind}”类型的沙盒尚未初始化 沙盒策略最近发生了更改。 遵守新策略的新沙盒将在几秒钟内变得可用
InternalServiceError (520) 由于初始化沙盒时出错,沙盒查询已中止 意外的基础结构故障。

支持嵌套虚拟化的 VM 大小

下表列出了支持 Hyper-V 沙盒技术的所有新式 VM 大小。

名称 类别
Standard_L8s_v3 存储优化
Standard_L16s_v3 存储优化
Standard_L8as_v3 存储优化
Standard_L16as_v3 存储优化
Standard_E8as_v5 存储优化
Standard_E16as_v5 存储优化
Standard_E8s_v4 存储优化
Standard_E16s_v4 存储优化
Standard_E8s_v5 存储优化
Standard_E16s_v5 存储优化
Standard_E2ads_v5 计算优化
Standard_E4ads_v5 计算优化
Standard_D13_v2 计算优化
Standard_E16ads_v5 计算优化
Standard_E2d_v4 计算优化
Standard_E4d_v4 计算优化
Standard_E8d_v4 计算优化
Standard_E16d_v4 计算优化
Standard_E2d_v5 计算优化
Standard_E4d_v5 计算优化
Standard_E8d_v5 计算优化
Standard_E16d_v5 计算优化
Standard_D32d_v4 计算优化