nginx多线程,工作进程coredump

yizhiniu 发布于 2016/10/01 21:03
阅读 320
收藏 0

nginx1.11.1+ice异步通信+定时器线程进行心跳和重连,用http_load  5个进程并发,压10W个请求,导致工作线程coredump。每个work进程都是多线程的。

gdb信息如下:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `nginx: worker process    '.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  ngx_http_run_posted_requests (c=0x7ff2f84f81e0) at src/http/ngx_http_request.c:2218
2218            pr = r->main->posted_requests;
[Current thread is 1 (Thread 0x7ff2f8742820 (LWP 40321))]

在pr = r->main->posted_requests;前面加了空指针判断,还是户coredump。。。

if (r == NULL || r->main == NULL) {
            return;
}

请教高手指点啊

加载中
0
yizhiniu
yizhiniu
最后发现的是在nginx模块中用异步和下游通信,模块调用的函数返回时没有调用final函数,后来,改成同步就好了。不用subsream,如何实现和下游的异步通信是个问题。
返回顶部
顶部