2012/09/24 15:08:13 [error] 4604#0: *1472988 lua socket connect timed out, client: 172.16.8.10, server: dbtest1, request: "GET /test1 HTTP/1.1", host: "192.168.13.63"
redis使用的sample代码的set/get部分,新建连接后尝试red:set_keepalive(0, 100)或者red:close(),两种情况下均会出现上述报错。
nginx使用的tengine 1.3.0, luagit是最新版本(stable版本不支持64bit?). 连接数在大约4000左右就达到了瓶颈, 3000左右就开始出现大量的socket connect time out错误。所有请求都返回了200.
content_by_lua '
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000) -- 1 sec
-- or connect to a unix domain socket file listened
-- by a redis server:
-- local ok, err = red:connect("unix:/path/to/redis.sock")
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.say("failed to connect: ", err)
return
end
ok, err = red:set("dog", "an aniaml")
if not ok then
ngx.say("failed to set dog: ", err)
return
end
ngx.say("set result: ", res)
local res, err = red:get("dog")
if not res then
ngx.say("failed to get dog: ", err)
return
end
if res == ngx.null then
ngx.say("dog not found.")
return
end
ngx.say("dog: ", res)
-- or just close the connection right away:
local ok, err = red:close()
if not ok then
ngx.say("failed to close: ", err)
return
end
';
On Mon, Sep 24, 2012 at 2:45 AM, Eric Shan <shan...@gmail.com> wrote:
> 2012/09/24 15:08:13 [error] 4604#0: *1472988 lua socket connect timed out,
> client: 172.16.8.10, server: dbtest1, request: "GET /test1 HTTP/1.1", host:
> "192.168.13.63"
>
> redis使用的sample代码的set/get部分,新建连接后尝试red:set_keepalive(0,
> 100)或者red:close(),两种情况下均会出现上述报错。
>
> nginx使用的tengine 1.3.0, luagit是最新版本(stable版本不支持64bit?).
推荐使用最新的 LuaJIT 2.0 beta10. 许多人(包括我们,CloudFlare)都在生产上使用很久了。
> 连接数在大约4000左右就达到了瓶颈,
> 3000左右就开始出现大量的socket connect time out错误。所有请求都返回了200.
>
在出现错误时,Nginx 和 Redis 进程的 CPU 使用率分别是怎样的呢?一种常见的情况是 Redis 进程把 CPU 跑满,然后
redis 的 accept() 队列溢出,此时 SYN 包被丢弃,便很容易出现连接超时错误。
Best regards,
-agentzh