lua-resty-http icon indicating copy to clipboard operation
lua-resty-http copied to clipboard

Set_keepalive alway return "closed while sending to client"

Open SandraWang-SH opened this issue 1 year ago • 0 comments

We plan to use Lua code blocks to call external services to record some logs in Nginx services, But the pressure test found poor performance and high latency.

I found that http.set_keepalive has error response and keepalive is not taking effect. I have pasted some code as follow, could you please help me analyze it?

Error response: *1375 [lua] content_by_lua(nginx.conf:97):27: failed to set keepalive: closed while sending to client, client: 192.168.71.11, server: _, request: "POST /v2/models/aiml_model/infer HTTP/1.1", host: "aiplatform.dev51.cbf.dev.paypalinc.com-shadow"

`

   location / {
        mirror /mirror1;
        resolver 192.168.36.10 valid=10s;
        proxy_pass  http://backends;
        proxy_method $request_method;
        mirror_request_body on;
        proxy_pass_request_body on;

        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        content_by_lua_block {
            local http = require "resty.http"
            local ngx_log = ngx.log
            local ngx_ERR = ngx.ERR
            local httpc = http.new()
            httpc:set_timeout(5000)

            local url = "https://aiplatform.dev52.cbf.dev.paypalinc.com/bizlogging/insert?model_id=model_id"
            local body = '{"metadata_schema": ["request_body"],"variable_schema": ["response_body"]}'
            local headers = {
                ["Content-Type"] = "application/json",
                ["accept"] = "*/*",
            }

           local res, err = httpc:request_uri(url, {
               method = "POST",
               body = body,
               headers = headers,
               ssl_verify = false,
               timeout = 1000,
           })

           ngx_log(ngx_ERR, "success to request: ", res.status)

            local ok, err1 = httpc:set_keepalive(60000, 100)
            if not ok then
                ngx_log(ngx_ERR, "failed to set keepalive: ", err1)
            end
        }
    }`

SandraWang-SH avatar Oct 30 '24 02:10 SandraWang-SH