0

我的项目在云运行中成功运行,我最近添加了https://www.npmjs.com/package/express-static-gzip包来提供我的预压缩资产,我注意到在部署到云后运行预压缩资产浏览器无法识别(它在本地主机上完美运行)

我还注意到堆栈驱动程序日志中的错误。

容器沙盒限制:不支持的系统调用 statx(0xffffff9c,0x3e2292ff7208,0x0,0xfff,0x3e2292ff6df0,0x3e2292ff6f10)。请参阅https://gvisor.dev/c/linux/amd64/statx了解更多信息。

gVisor 错误

还注意到从谷歌云运行提供的资产没有接受编码头(当查看 express-static-gzip 包的源代码时,它使用 nodejs 文件读取调用,我认为文件读取调用可能会导致 gVisor 中的错误)

更新:

即使在删除 express-static-gzip 包之后也会出现此“容器沙盒限制:不支持的系统调用”错误。

有谁知道这个错误?

4

2 回答 2

1

AFAIK“statx”系统调用在 gVisor 中实现(自 6 月 19 日起)。也许 Cloud Run 尚未使用最新版本。

于 2019-07-26T21:58:34.520 回答
0

当您在日志中看到不受支持的系统调用错误时,请注意在 Google Cloud Run 上运行时:

大多数时候,失败的系统调用并不意味着你的应用程序失败了。在这里,Node.js 正在尝试使用 statx(如果可用),并回退到受支持的 stat 系统调用。

大多数语言会在崩溃时显式打印堆栈跟踪,或者在系统调用失败时抛出异常。我认为这里不会发生这种情况。

于 2019-07-28T03:09:16.190 回答