使用ngx_lua后nginx出现大量CLOSE_WAIT状态的socket,最后导致10240 worker_connections are not enough

339 views
Skip to first unread message

刘宏

unread,
Jul 8, 2013, 3:18:09 AM7/8/13
to open...@googlegroups.com
春哥你好!
ngx_lua版本是 v0.7.19
采用lua脚本处理一些鉴权,最近发现运行一段时间(3-5天左右)会出现10240 worker_connections are not enough错误,导致整个nginx无法处理请求。
出错时用netstat 观察发现有很多处于CLOSE_WAIT状态的socket,请问春哥这个错误有可能是什么原因造成的呢?
有没有什么工具可以跟踪排错的呢?

以上谢谢!


Yichun Zhang (agentzh)

unread,
Jul 8, 2013, 6:05:21 PM7/8/13
to openresty
Hello!

2013/7/8 刘宏:
可以使用 Nginx Systemtap Toolkit 里面的工具进行分析:

https://github.com/agentzh/nginx-systemtap-toolkit

另外,最好提供一个最小化的能复现问题的示例,以方便问题诊断。

你看到的 CLOSE_WAIT 状态的连接是下游连接还是上游连接?换句话说,与来自 http 客户端的连接,还是 nginx 到后端的那些连接?

你使用的是什么版本的 nginx?nginx -V 命令行的输出是怎样的?

Regards,
-agentzh

刘宏

unread,
Jul 8, 2013, 8:55:42 PM7/8/13
to open...@googlegroups.com
Hello!
感谢春哥的回复。
现在暂时是无法重现,这个问题好像是随机发生的,但是时间长了又必定会发生,触发条件未知。
CLOSE_WAIT状态的连接是
tcp        1      0 172.16.2.4:80               172.16.2.252:49146          CLOSE_WAIT  
看上去应该是来自http客户端的连接没关闭导致。
>
>另外,最好提供一个最小化的能复现问题的示例,以方便问题诊断。
>
>你看到的 CLOSE_WAIT 状态的连接是下游连接还是上游连接?换句话说,与来自 http 客户端的连接,还是 nginx 到后端的那些连接?
>
>你使用的是什么版本的 nginx?nginx -V 命令行的输出是怎样的?
>
>Regards,
>-agentzh
>
>-- 
>-- 
>邮件来自列表“openresty”,专用于技术讨论!
>订阅: 请发空白邮件到 openresty...@googlegroups.com
>发言: 请发邮件到 open...@googlegroups.com
>退订: 请发邮件至 openresty+...@googlegroups.com
>归档: http://groups.google.com/group/openresty
>官网: http://openresty.org/
>仓库: https://github.com/agentzh/ngx_openresty
>教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
>
>


刘宏

unread,
Jul 8, 2013, 11:24:06 PM7/8/13
to open...@googlegroups.com
hello 春哥:
nginx版本如下
 sbin/nginx -V
Tengine version: Tengine/1.4.5 (nginx/1.2.8)
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
TLS SNI support disabled



在 2013-07-09 06:05:21,"Yichun Zhang (agentzh)" <age...@gmail.com
> 写道:
>Hello!
>
>2013/7/8 刘宏:
>> ngx_lua版本是 v0.7.19
>> 采用lua脚本处理一些鉴权,最近发现运行一段时间(3-5天左右)会出现10240 worker_connections are not
>> enough错误,导致整个nginx无法处理请求。
>> 出错时用netstat 观察发现有很多处于CLOSE_WAIT状态的socket,请问春哥这个错误有可能是什么原因造成的呢?
>> 有没有什么工具可以跟踪排错的呢?
>>
>
>可以使用 Nginx Systemtap Toolkit 里面的工具进行分析:
>
>    https://github.com/agentzh/nginx-systemtap-toolkit
>
>另外,最好提供一个最小化的能复现问题的示例,以方便问题诊断。
>
>你看到的 CLOSE_WAIT 状态的连接是下游连接还是上游连接?换句话说,与来自 http 客户端的连接,还是 nginx 到后端的那些连接?
>
>你使用的是什么版本的 nginx?nginx -V 命令行的输出是怎样的?
>
>Regards,
>-agentzh
>
>-- 
>-- 
>邮件来自列表“openresty”,专用于技术讨论!
>订阅: 请发空白邮件到 openresty...@googlegroups.com

Yichun Zhang (agentzh)

unread,
Jul 8, 2013, 11:28:03 PM7/8/13
to openresty
Hello!

2013/7/8 刘宏:
> nginx版本如下
> sbin/nginx -V
> Tengine version: Tengine/1.4.5 (nginx/1.2.8)
> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
> TLS SNI support disabled
>

你能使用标准的 nginx 核心(或者 openresty 软件包)复现此问题么?我不会为使用了 Tengine 的配置提供技术支持。

另外,建议使用 Nginx Systemtap Toolkit 里面的工具对有问题的 nginx 进程进行分析。你可以把那些工具的输出贴到这里来。

Best regards,
-agentzh
Reply all
Reply to author
Forward
0 new messages