当在入口后面的Kubernetes中投放服务时,Theia IDE网络套接字每30秒断开连接一次

问题描述

我在Google云端上配置了具有托管证书的kubernetes入口。然后,我将整个theia / theia码头工人镜像作为一个容器,并将kubernetes服务连接到入口和容器。

在我的浏览器中,theia页面的初始加载正常,并且所有插件都在后端启动。之后,每30秒浏览器就会向wss:// mytheiadomain发出另一个websocket请求。 theia后端日志

root ERROR [hosted-plugin: 59] Error: connection is closed
    at Object.create (/home/theia/node_modules/@theia/plugin-ext/lib/common/rpc-protocol.js:82:30)
    at Object.<anonymous> (/home/theia/node_modules/@theia/plugin-ext/lib/common/rpc-protocol.js:108:56)
    at Object.disposable.dispose (/home/theia/node_modules/@theia/core/lib/common/disposable.js:101:13)
    at disposableCollection.dispose (/home/theia/node_modules/@theia/core/lib/common/disposable.js:78:40)
    at RPCProtocolImpl.dispose (/home/theia/node_modules/@theia/plugin-ext/lib/common/rpc-protocol.js:129:24)
    at /home/theia/node_modules/@theia/plugin-ext/lib/hosted/node/plugin-host.js:142:21
    at step (/home/theia/node_modules/@theia/plugin-ext/lib/hosted/node/plugin-host.js:48:23)
    at Object.next (/home/theia/node_modules/@theia/plugin-ext/lib/hosted/node/plugin-host.js:29:53)
    at fulfilled (/home/theia/node_modules/@theia/plugin-ext/lib/hosted/node/plugin-host.js:20:58)
    at processticksAndRejections (internal/process/task_queues.js:97:5) {
  code: 'RPC_PROTOCOL_CLOSED'
}
root INFO [e894a0b2-e9cd-4f35-8167-89eb28e840d8][typefox.yang-vscode]: disconnected.
root INFO [e894a0b2-e9cd-4f35-8167-89eb28e840d8][rebornix.ruby]: disconnected.
root INFO [e894a0b2-e9cd-4f35-8167-89eb28e840d8][ms-python.python]: disconnected.
...

,所有插件断开连接并再次初始化。 (有时我什至没有收到此错误消息,而插件只是断开连接并初始化)

如果我断开浏览器的wifi连接,则不会发生!因此,浏览器的wss请求似乎触发了重新启动。如果我在普通docker上本地运行theia-full,则不会每30秒断开一次连接。

这是我经过几个小时的搜索后才发现的错误。任何提示将不胜感激。我可以提供更多日志输出配置文件

解决方法

Google Load Balancers的默认超时为30秒。

对于外部HTTP(S)负载平衡器和内部HTTP(S)负载平衡器,如果将HTTP连接升级到WebSocket,则后端服务超时将定义WebSocket可以打开的最长时间(无论是空闲还是空闲)。不是。

您需要使用所需的超时创建自定义BackendCondig