遇到一些我需要找到解决方法的问题。OPA 引擎版本为 0.23.2,我正在尝试下载捆绑包,但收到以下错误消息“捆绑包下载失败:捆绑包超出最大大小(1073741824 字节)”
问问题
130 次
1 回答
0
1GB 限制是硬编码的(截至目前)https://github.com/open-policy-agent/opa/blob/63560e0d1e767a8c973bfa217d3c734adea6d5f7/bundle/bundle.go#L42
请记住,1GB 的 gzip 压缩 json 数据在解压缩并加载到内存时可能会使用大量内存。给出一些关于为什么存在这个限制的背景......经验法则是它类似于内存中原始 JSON -> golang/opa 数据结构的 20 倍,并且 gzip 压缩变化更大,但我认为 5:1 的比率是很合理。餐巾纸的数学计算结果表明,OPA 需要 100GB 的内存来加载 1GB 的捆绑包 (1 5 20)。大多数 OPA 用例不太可能/希望发生这种情况,因此会出现错误。
编辑:这个 1GB 的限制原来不是针对压缩包的大小,而是针对未压缩的 JSON 文件。所以内存扩展没有那么大的上限(但是上面的示例仍然适用于 1GB压缩大小的捆绑包)
我建议提交一个问题,似乎我们可能会公开一个配置选项以增加内存使用可接受的用例的限制(gzip 的比率较低,结构的开销较少等。取决于 JSON数据)
于 2020-10-13T16:54:14.417 回答