预期行为
http.send 在负载下应该可以正常工作
实际行为
在给定分钟内处理 1000 个请求后,它会因打开文件描述符错误过多而失败,并在特定分钟后恢复
重现问题的步骤
- OPA 版本:openpolicyagent/opa:0.31.0-envoy
- 给出 OPA 的示例查询、输入、数据和策略:
policy_response := http_response { http_response := http.send({ "method" : "POST", "url": opa.runtime()["env"]["URL"], "headers": { "authorization": token }, "raise_error": false, "timeout": "3s", }) }
- OPA 返回的示例输出
{"code":"eval_http_send_network_error","message":"Post \"{url}\": dial tcp: lookup {hostname} on x.x.x.x:53: dial udp x.x.x.x:53: socket: too many open files","status_code":0,"x-request-id":"b643f986-44ca-44c4-95a6-fc4cbe1f5639"}}
我相信 http.send 正在为导致问题的每个请求创建一个新的 HTTP 客户端。是否有任何替代方案来克服这个问题。先感谢您!