Hello!
2013/10/30 wgm:
> 我现在又发现一个问题,就是在客户端启动50个线程设置发送超时时间过短,比如200ms时,服务器端nginx进程会死掉,特别是把客户端kill 后,nginx一定会死掉。
请定义你这里使用的"死掉"一词。这究竟是 nginx 进程崩溃,还是 nginx 进程 CPU 占用 100%,抑或是留下了永远处于
CLOSE_WAIT 状态的连接?
另外,建议提供一个最小化的完整示例和复现问题的步骤,这样我可以在我本地看到你看到的问题。
> 我分析可能是我没有增加ngx.on_abort去判断客户端主动断开,没有调用ngx.exit(),所以nginx进程会死掉。我用ab 进做系统压力测试时一切正常。
对于读取请求体的服务,一般并不需要设置 ngx.on_abort,因为当连接断开时,读取操作必会立即返回 "closed" 错误(在
recv 调用级别上便会立即返回 0 值)。
Best regards,
-agentzh