节点应用上的Google Cloud Run gVisor syscall错误

时间:2019-07-26 06:15:00

标签: node.js google-cloud-platform google-cloud-run gvisor

我的项目在云运行中成功运行,最近我添加了https://www.npmjs.com/package/express-static-gzip程序包来服务我的预压缩资产,我注意到的是在部署到云运行后,预压缩资产没有被浏览器识别(在localhost上完美运行)

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

  

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

gVisor Error

还注意到从Google Cloud Run提供的资产不具有accept-encoding标头(在研究express-static-gzip包的源代码时,它使用nodejs文件读取调用,我认为文件读取调用可能会导致gVisor错误)

更新:

即使也删除了express-static-gzip软件包,也收到此“容器沙箱限制:不支持的系统调用”错误。

有人知道这个错误吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

当您在日志中看到不受支持的syscall错误时,在Google Cloud Run上运行时值得注意:

在大多数情况下,失败的系统调用并不意味着您的应用程序就会失败。这里的Node.js尝试使用statx(如果可用),然后回退到受支持的stat系统调用。

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