我有托管GO OSB应用程序的云运行服务,该应用程序实现了gRpc,但通过使用云sql(mysql)作为数据库的grp网关公开了http REST API。除补丁外,所有 CRUD API 的响应都很好。它抛出以下错误,http 响应代码为 503:{ "textPayload": "The request failed because either the HTTP response was malformed or connection to the instance had an error.", "insertId": "6141e984000c63529e7b7afd", "httpRequest": { "requestMethod": "PATCH", "requestUrl": "https://********-********-mr336-qv7hk7cx3a-uc.a.run.app/v2/service_instances/237e80fd-b22e-4df0-b9ed-23c91a4d7f51", "requestSize": "1102", "status": 503, "responseSize": "976", "userAgent": "PostmanRuntime/7.28.4", "remoteIp": "********", "serverIp": "********", "latency": "0.410343680s", "protocol": "HTTP/1.1" }, "resource": { "type": "cloud_run_revision", "labels": { "location": "us-central1", "revision_name": "********-********-mr336-00001-hop", "project_id": "********-********-l-app-us-01", "configuration_name": "********-********-mr336", "service_name": "********-********-mr336" } }, "timestamp": "2021-09-15T12:39:32.811858Z", "severity": "ERROR", "labels": { "instanceId": "00bf4bf02dff6d5f53cff1f1828cafbca265606a996eddff5cb44e3fff674efb77ca51eca7087fb8b8e7acba227b2a3e3e913bdfcc0a487640a2e028" }, "logName": "projects/********/logs/run.googleapis.com%2Frequests", "trace": "projects/********/traces/e29e5add9452d171e9eebd26817bb667", "receiveTimestamp": "2021-09-15T12:39:32.817171397Z"}注意事项:每次补丁请求后,我都可以看到实例启动日志,即在上面提到的日志之后,每次我都可以看到容器入口点(服务器)启动日志(如冷启动)。一旦服务器启动完成,它就会再次在日志中抛出上述相同的错误。需要注意的重要一点是,我也看不到来自我的应用程序的任何日志,这表明PATCH API请求未到达在云运行服务后面运行的容器实例。此外,我的活动实例在冷启动后变为理想状态,然后在最后一次请求命中后的1分钟内缩小到0,但它似乎不会给其他API带来问题。这就是它应该如何工作,但找不到任何关于PATCH问题线索。
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
此问题现已修复!
由于在同一端口上处理多个协议,并且其中一个协议匹配器通过从服务器返回空回复导致PATCH API的问题。因此,对匹配器进行了更改,并且它起作用了。
RCA : 互助 HTTP1快速匹配器仅匹配 HTTP 请求中的方法。这个匹配器非常乐观:如果它返回true,并不意味着请求是有效的HTTP响应。正确但较慢的HTTP1匹配器使用“HTTP1”代替,它扫描整个请求最多4096字节,但其速度较慢。
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消
