openresty / openresty/lua-nginx-module

lua request hang

Open
#2,018 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
11.8k
Forks
2.1k
Avg merge
6h 1m
Merged PRs (30d)
6

Description

location /eads {
default_type application/json;
content_by_lua_file /home/a/share/tengine/lua/rpc_eads.lua;
}

location /rpc_eads/ {
gzip on;
proxy_connect_timeout 200ms; # optional; control backend timeouts
proxy_send_timeout 200ms; # same
proxy_read_timeout 200ms; # same
send_timeout 200ms;
gzip_types text/xml "application/x-javascript; charset=GB2312" application/xxxx;
cluster_info /home/a/share/tengine/conf/cluster.ini gig_mesh_info;
gig_mesh;
}

lua code

local res = ngx.location.capture_multi{{eads_url,{method=ngx.HTTP_GET}}}

问题描述

curl请求eads,lua代码 local res = ngx.location.capture(eads_url) 掉erpc_eads的服务(拓展的nginx module,将http转为rpc),当curl发起请求时居然卡住了,我只有kill curl时,它才能走到下面的程序,这是什么原因导致的?

单独请求curl /rpc_eads/ 有正常内容返回

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the hang with the shown locations, curl request, and the Lua entry point rpc_eads.lua, comparing ngx.location.capture or capture_multi with a direct request to /rpc_eads/. Trace the request through the eRPC nginx module and determine why the subrequest completes only after curl is killed; done means documenting the cause and a verified resolution.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua, nginx
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.